2011-06-29 78 views
2

我工作的用户登录系统的,我想出了,我想过去,你罚款乡亲运行,以确保我是不是要建立一个巨大的安全漏洞的解决方案。JavaScript的HTTPS到HTTP的iFrame安全问题

这里是我们所拥有的。

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

所以:

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

它在所有的浏览器伟大的工作,那么远,没有测试IE,但我想验证这是不是一个真正可怕的做法之前,我出示。

谢谢!

+2

为什么你会在认证后回到HTTP?是不是建立一个安全的加密会话的重点? – Pointy

+0

虽然Pointy对他的评论很有帮助,但我还想补充一点,你应该确保你放到页面上的iFrame在内联时具有适当的src属性。如果它没有https src,当它被拖放到页面上,然后尝试将其更改为https src浏览器会将令人讨厌的弹出框放在你身上。 – MoarCodePlz

回答

2

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

使用https iframe这样,你防止浏览器显示常用的安全符号:锁,绿/蓝条,更重要的是,该网站的地址(攻击者可能只是把自己的链接到他们的www.some-other-site.example而不是缩进的网站; www.some-other-site.example可能有一个合法的证书,并且浏览器不会给出任何警报消息)。

作为HTTPS iframe在HTTPS iframe上的这种做法尤其糟糕,但当通过HTTPS提供包含页面时,这种做法并不好。您无法轻松验证为服务成帧页面的服务器的身份。 (可惜的是,这是(或者至少是)3-D Secure推荐的内容...)

如果您想要通过HTTPS进行身份验证,请将整个页面切换到HTTPS,然后通过提供非安全cookie 。当然,这不是非常安全的(有人可以拦截那个安全令牌,正如FireSheep所普及的那样),但是这至少是更好的,因为用户至少可以检查他们输入凭据的页面是合法的一。 (这应该是用心做太多,看this question

最好的办法是,如果你能留在HTTPS不使用iFrame的身份验证后。

+0

我刚刚想起[这个问题](http://stackoverflow.com/questions/3144986/http-https-iframe/3183176#3183176)(几乎是一式两份)。 – Bruno