我刚刚将我的网站从http移至https,IE-9开始在home page显示非安全内容警告。这个警告是可以理解的,因为我有一个http调用googleapi来获取jquery脚本。但是当我登录并进入内部页面时,尽管大部分图像都是通过http协议来自其他服务器,但IE没有任何警告。 所以问题是:通过https访问网站时,通过http获取图像是否正常?只有css和js很重要吗?或者我必须通过HTTPS获取所有数据?如果是这样,我的场景如何合理(在没有警告的情况下通过https页面上的其他服务器获取图像)?
答案 0 :(得分:3)
如果您通过HTTP加载CSS和JS,则攻击者可以注入可执行代码。不幸的是IE会在CSS中执行JavaScript。从同一个域通过HTTP加载图像的问题是,浏览器可能会以明文形式泄露会话ID,这是违规OWASP a9。
答案 1 :(得分:2)
您可以在所有网址上使用protocol-relative URL以避免在IE中出现此问题。
基本上,不是通过使用协议的完整路径链接到js / image / css,而是通过省略协议位并使用双斜杠链接到它,//。
这将具有从父页面继承协议的所有上述链接的效果。
当然,这取决于您在为不同文件表单提供服务的域上拥有有效的SSL证书。
另外需要注意的是,使用数据URI完成的页面或CSS中的图像也可能导致IE中出现混合内容警告。
要找出导致问题的文件,建议您使用Fiddler
另一个工具是SO用户,Eric Law写道:
从http://www.bayden.com/dl/scriptfreesetup.exe安装它,您将获得一个不同的混合内容提示,其中显示了页面上第一个不安全资源的确切URL。该工具基本上是一个原型,您应该在完成后卸载它。它适用于IE8,您应该以管理员身份安装它。