JavaScript HTTPS到HTTP iFrame安全问题

时间:2011-06-29 13:36:43

标签: javascript security http iframe https

我正在开发一个用户登录系统,我想出了一个解决方案,我希望能够帮助你完成这些解决方案,以确保我不会创建一个巨大的安全漏洞。

这就是我们所拥有的。

您从HTTP页面开始,单击链接时将打开模式窗口。单击HTTP页面时的第一个链接将使用链接到HTTPS页面的iFrame重新填充模式。由于我无法与HTTP页面进行HTTPS通话,因此我在HTTPS iframe页面上使用document.location设置来使成功页面成为HTTP。然后HTTP页面会回到父窗口。

所以:

HTTP(点击) - >在HTTPS中打开iFrame - >成功document.location上的HTTPS安全登录 - > HTTP成功页面 - > window.parent.success_msg(deferred);调用父窗口。

到目前为止,它在所有浏览器中都运行良好......还没有测试过IE,但我想在我提出之前验证这不是一个非常糟糕的做法。

谢谢!

1 个答案:

答案 0 :(得分:2)

HTTP页面中的HTTPS iframe是非常糟糕的做法,因为它使用户很难获得有关该页面的更详细信息(特别是与安全相关的信息)。 (当然,您可以右键单击并找到检查iframe属性的方法,但即使是知道如何操作的用户也可能不会这样做。

使用这样的HTTPS iframe,可以阻止浏览器显示常用的安全符号:锁定,绿色/蓝色条,更重要的是,网站的地址(攻击者可以放置自己的链接)到他们的www.some-other-site.example而不是缩进的网站; www.some-other-site.example可能有合法的证书,浏览器不会给出任何警告信息。)

这种做法在通过HTTP提供的页面中作为HTTPS iframe特别糟糕,但是当通过HTTPS提供包含页面时,这种做法并不好。您也无法轻松验证为框架页面提供服务的服务器的身份。 (可悲的是,这是(或至少是)3-D Secure推荐的内容......)

如果要通过HTTPS进行身份验证,请将整页切换为HTTPS,然后通过提供非安全cookie将其切换回来。当然,这不是很安全(有人可以拦截安全令牌,如FireSheep所推广的那样),但这样做更好,至少,用户将能够检查他们输入凭据的页面是否合法一。 (这也应该小心,请参阅this question。)

如果可以的话,最好的方法是在身份验证后保留HTTPS而不使用iframe。