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 表仅在浏览器中加载