2012-07-14 89 views
2

我刚刚将我的网站从http移动到https,并且IE-9开始在home page处显示不安全的内容警告。这个警告是可以理解的,因为我有一个http调用来获取jquery脚本的googleapi。但是,当我登录并进入内部页面时,尽管大部分图像都是通过http协议从其他服务器传出,但IE并没有发出警告。 所以问题:通过https访问站点时,通过http获取映像是否正常?只有css和js很重要吗?还是必须通过HTTPS获取所有数据?如果是的话,我的方案如何合理(通过http页面上的其他服务器获取图像而不发出警告)?混合内容警告IE:重要的是; CSS,图像,一切?

+0

谷歌的jQuery通过https现在提供:https://developers.google.com/speed/libraries/devguide – Thomas 2012-07-14 08:56:34

+0

都在http和https – 2012-07-14 09:17:17

回答

3

如果您通过HTTP加载CSS和JS,则攻击者可以注入可执行代码。不幸的是IE会在CSS内执行JavaScript。从同一个域通过HTTP加载图像的问题是,浏览器可能会以纯文本溢出会话标识符,这是违规行为OWASP a9

2

您可以在所有的url上使用protocol-relative URL以避免IE中出现此问题。基本上,而不是链接到一个js/image/css通过使用它的完整路径与协议,而是通过忽略协议位并仅使用双斜杠链接到它//。

这将产生所有上述从父页面继承协议的链接的效果。

当然,这取决于您在提供不同文件格式的域上拥有有效的SSL证书。

还有一点需要注意的是,使用数据URI完成的页面或CSS中的图像也可能导致IE中出现混合内容警告。

要找出哪些文件是造成问题,我建议使用Fiddler

也有另一种工具,一个老乡SO用户,埃里克·法写道:

http://www.bayden.com/dl/scriptfreesetup.exe安装它,你将得到不同混合内容提示,它显示页面上第一个不安全资源的确切URL。该工具基本上是一个原型,您应该在完成后卸载它。它适用于IE8,你应该以管理员身份安装它。

+0

谢谢Moin,相对URL确实解决了这个问题,但我有我得到的场景来自其他服务器的图像,如“https:// 212.75.234.21/path/image.jpg”。现在我们没有其他服务器的域名,我们无法获得针对IP的SSL证书(就我所知)。所以当我显示这些图片时,我必须使用绝对网址。同样,我正在使用cdn中的脚本文件,该文件必须使用绝对url进行引用。但问题是脚本触发混合内容警告,但图像不会产生任何此类警告。 – 2012-07-16 05:39:07