首页>安全资讯>HTTPS关于混合内容的经验之谈

HTTPS关于混合内容的经验之谈

HTTPS作为一种加密传输协议,被广泛应用于各个站点和系统当。在为站点和系统部署SSL证书实现HTTPS加密的过程中,往往会遇到一些令站长们抓狂不已问题——比如混合内容导致的"网站不安全"提示。

HTTPS混合内容

什么是混合内容

HTTPS网页中加载的HTTP资源,我们称之为混合内容。不同的浏览器,对混合资源也有不已的处理方式:

IE浏览器:早期的IE发现混合内容请求是,会弹出"是否只查看安全的网页内容",如果用户选择了"是",那么所有混合内容资源都不会加载,选择"否"则反之;较为新的IE将选择对话框该为了底部提示栏,图片类的混合内容默认加载,但CSS、JavaScript等资源还是根据用户选择来决定是否加载。

现代浏览器ChromeFirefoxSafari等):遵守W3C关于混合内容的规范,默认加载图片类等包含微笑较小的资源,同时会在控制台打印警告信息。

这类资源包括:

>过<img>标签加载的图片;

>过<video>、<audio>及<source>标签加载的视频或音频;

>经预读的资源。

除此之外的所有混合内容被称为Blockable,浏览器不予加载,直接在控制台打印错误信息。

移动浏览器:同样按照W3C标准,以android 5和IOS 9为分界线。

>Android 5以下的Webviwe和IOS9以下的Safari会默认加载所有内容;

>Android5以上版本的Webviwe和IOS9以上版本的Safari默认不会加载 Blockable类资源。

解决方案

通过 CSP 的 block-all-mixed-content 指令,可以让页面进入对混合内容的严格检测模式。在这种模式下,所有非 HTTPS 资源都不允许加载。跟其它所有 CSP 规则一样,可以通过以下两种方式启用这个指令:

HTTP 响应头方式:

Content-Security-Policy: block-all-mixed-content

标签方式:

<meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">

总结

历史悠久的网站在HTTPS迁移中经常容易出现疏漏,即使确认所有代码没有问题,但某些从数据库拉出来的字段还存在HTTP链接。通过upgrade-insecure-requests 这个 CSP 指令,可以让浏览器帮忙做这个转换。启用这个策略后,有两个变化:

>页面所有 HTTP 资源,会被替换为 HTTPS 地址再发起请求;

>面所有站内链接,点击后会被替换为 HTTPS 地址再跳转;

跟其它所有 CSP 规则一样,这个指令也有两种方式来启用。需要注意的是 upgrade-insecure-requests 只替换协议部分,所以只适用于 HTTP/HTTPS 域名和路径完全一致的场景。

相关主题: 谷歌标记HTTP为不安全 Firefox HTTPS安全标识