CSP:升級不安全請求
HTTP Content-Security-Policy (CSP) 的 upgrade-insecure-requests 指令指示使用者代理將網站所有不安全的 URL(透過 HTTP 提供的 URL)視為已替換為安全的 URL(透過 HTTPS 提供的 URL)。 此指令適用於具有大量不安全的舊版 URL 且需要重寫的網站。
注意:upgrade-insecure-requests 指令在 block-all-mixed-content 之前進行評估,如果設定了該指令,則後者實際上是無效的。 建議設定任一指令,但不要同時設定兩者,除非您想強制在不支援重定向到 HTTP 後強制 HTTPS 的舊瀏覽器中使用 HTTPS。
upgrade-insecure-requests 指令不能保證透過第三方網站連結訪問您網站的使用者會升級到 HTTPS 進行頂級導航,因此它不能替代 Strict-Transport-Security (HSTS) 標頭,該標頭應始終設定為適當的 max-age,以確保使用者不會受到 SSL 剝離攻擊。
語法
Content-Security-Policy: upgrade-insecure-requests;
示例
使用 HTTP 標頭
Content-Security-Policy: upgrade-insecure-requests;
使用 HTML 元元素
<meta
http-equiv="Content-Security-Policy"
content="upgrade-insecure-requests" />
透過在想要從 HTTP 遷移到 HTTPS 的域 example.com 上設定上述標頭,非導航不安全資源請求將自動升級(第一方和第三方請求)。
<img src="http://example.com/image.png" />
<img src="http://not-example.com/image.png" />
這些 URL 將在發出請求之前被重寫,這意味著不會有任何不安全的請求到達網路。 請注意,如果請求的資源實際上不可透過 HTTPS 獲取,則該請求將失敗,不會回退到 HTTP。
<img src="https://example.com/image.png" />
<img src="https://not-example.com/image.png" />
導航升級到第三方資源帶來更高的破壞可能性,這些資源不會升級
<a href="https://example.com/">Home</a>
<a href="http://not-example.com/">Home</a>
查詢不安全的請求
藉助 Content-Security-Policy-Report-Only 標頭和 report-uri 指令,您可以像這樣設定強制策略和報告策略
Content-Security-Policy: upgrade-insecure-requests; default-src https:
Content-Security-Policy-Report-Only: default-src https:; report-uri /endpoint
這樣,您仍然可以在安全的網站上升級不安全的請求,但只有監控策略被違反,並且將不安全的資源報告到您的端點。
規範
| 規範 |
|---|
| 升級不安全的請求 # 交付 |
瀏覽器相容性
BCD 表僅在瀏覽器中載入