我正在开发一个用户登录系统,我想出了一个解决方案,我希望能够帮助你完成这些解决方案,以确保我不会创建一个巨大的安全漏洞。
这就是我们所拥有的。
您从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,但我想在我提出之前验证这不是一个非常糟糕的做法。
谢谢!
答案 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。