upgrade-insecure-requests让浏览器不再显示 https 页面中的 http 请求警报

HTTPS 是 HTTP over Secure Socket Layer,以安全为目标的 HTTP 通道,所以在 HTTPS 承载的页面上不允许出现 http 请求,一旦出现就是提示或报错:

Mixed Content: The page at ‘https://www.taobao.com/‘ was loaded over HTTPS, but requested an insecure image ‘http://g.alicdn.com/s.gif’. This content should also be served over HTTPS.

HTTPS改造之后,我们可以在很多页面中看到如下警报:

很多运营对 https 没有技术概念,在填入的数据中不免出现 http 的资源,体系庞大,出现疏忽和漏洞也是不可避免的。

CSP设置upgrade-insecure-requests

好在 W3C 工作组考虑到了我们升级 HTTPS 的艰难,在 2015 年 4 月份就出了一个 Upgrade Insecure Requests 的草案,他的作用就是让浏览器自动升级请求。

在我们服务器的响应头中加入:

header("Content-Security-Policy: upgrade-insecure-requests");

我们的页面是 https 的,而这个页面中包含了大量的 http 资源(图片、iframe等),页面一旦发现存在上述响应头,会在加载 http 资源时自动替换成 https 请求。可以查看 google 提供的一个 demo

不过让人不解的是,这个资源发出了两次请求,猜测是浏览器实现的 bug:

当然,如果我们不方便在服务器/Nginx 上操作,也可以在页面中加入 meta 头:

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />

目前支持这个设置的还只有 chrome 43.0,不过我相信,CSP 将成为未来 web 前端安全大力关注和使用的内容。而 upgrade-insecure-requests 草案也会很快进入 RFC 模式。

从 W3C 工作组给出的 example,可以看出,这个设置不会对外域的 a 链接做处理,所以可以放心使用。

相关阅读

转载于:https://www.cnblogs.com/hustskyking/p/upgrade-insecure-requests.html 

http upgrade-insecure-requests是一个HTTP头部字段,用于指定浏览器是否在不安全的HTTP请求中自动升级到安全的HTTPS协议。当该字段设置为1时,浏览器将尝试将HTTP请求升级为HTTPS请求,以提高安全性。 在默认情况下,当浏览器加载一个包含HTTP连接的网页时,网页中的资源请求(例如图片、脚本等)也会默认使用HTTP连接,即使网页本身使用HTTPS连接。这样会存在安全风险,因为HTTP连接的传输是不加密的,可能被黑客窃听、篡改等。 通过使用http upgrade-insecure-requests头部字段,网页可以向浏览器发出指令,在加载时自动将HTTP资源请求升级为HTTPS。这样可以确保网页的所有资源在传输过程中都使用了加密的HTTPS连接,提高用户的安全性。 当浏览器收到网页响应时,会检查其中的资源链接。如果检测到某些资源是使用HTTP连接的,而网页中存在http upgrade-insecure-requests字段并被设置为1,浏览器就会自动将这些资源请求转为HTTPS。整个过程对于用户来说是透明的,用户不需要做任何操作。 需要注意的是,使用http upgrade-insecure-requests头部字段仅仅是告诉浏览器去升级HTTP资源为HTTPS请求,但并不能完全确保资源请求都成功升级为HTTPS。如果某些资源服务器不支持HTTPS,或者HTTPS连接存在错误,那么这些资源仍然会以不安全的HTTP方式加载。 总之,http upgrade-insecure-requests头部字段可以提高网页和资源的安全性,但仍需要保证资源服务器的支持和HTTPS连接的正确配置。同时,网站开发人员和管理员也应该注意安全性措施,确保使用HTTPS连接和加密传输用户的敏感数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值