Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript HTTPS到HTTP iFrame安全问题_Javascript_Security_Http_Iframe_Https - Fatal编程技术网

JavaScript HTTPS到HTTP iFrame安全问题

JavaScript HTTPS到HTTP iFrame安全问题,javascript,security,http,iframe,https,Javascript,Security,Http,Iframe,Https,我正在开发一个用户登录系统,我已经想出了一个解决方案,我想通过你们这些优秀的人来运行,以确保我不会制造一个巨大的安全漏洞 这是我们所拥有的 您从一个HTTP页面开始,当您单击一个链接时,该页面将打开一个模式窗口。单击HTTP页面的第一个链接时,将使用链接到HTTPS页面的iFrame重新填充该模式。因为我不能让HTTPS与HTTP页面对话,所以我使用HTTPS iframe页面上的document.location设置使成功页面成为HTTP。然后HTTP页面与父窗口进行对话 因此: HTTP(单

我正在开发一个用户登录系统,我已经想出了一个解决方案,我想通过你们这些优秀的人来运行,以确保我不会制造一个巨大的安全漏洞

这是我们所拥有的

您从一个HTTP页面开始,当您单击一个链接时,该页面将打开一个模式窗口。单击HTTP页面的第一个链接时,将使用链接到HTTPS页面的iFrame重新填充该模式。因为我不能让HTTPS与HTTP页面对话,所以我使用HTTPS iframe页面上的
document.location
设置使成功页面成为HTTP。然后HTTP页面与父窗口进行对话

因此:

HTTP(单击)->在HTTPS中打开iFrame->在成功时通过HTTPS安全登录
文档。位置
->HTTP成功页面->
窗口.parent.Success\u消息(延迟)调用父窗口

到目前为止,它在所有浏览器中都工作得很好…还没有测试IE,但我想在演示之前验证一下这不是一个非常糟糕的实践


谢谢

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

使用像这样的HTTPS
iframe
,可以防止浏览器显示常见的安全符号:锁定、绿色/蓝色条,更重要的是,还有站点地址(攻击者只需将自己的链接放到他们的
www.some-other-site.example
而不是缩进的站点;
www.some-other-site.example
可能拥有合法证书,浏览器不会发出任何警报消息)

这种做法对于通过HTTP提供服务的页面中的HTTPS
iframe
来说尤其糟糕,但当包含的页面通过HTTPS提供服务时,这种做法也不好。您也无法轻松验证为框架页面提供服务的服务器的身份。(遗憾的是,这是(或至少是)推荐的…)

如果您想通过HTTPS进行身份验证,请将整个页面切换到HTTPS,然后返回,方法是提供一个不安全的cookie。当然,这不是很安全(有人可能会截获该安全令牌,正如FireSheep所宣传的那样),但这样做更好,至少用户可以检查他们输入凭据的页面是否合法(这也应该小心,请参阅)


如果可以的话,最好的方法是在身份验证后不使用iFrame就停留在HTTPS上。

为什么在身份验证后要返回HTTP?建立一个安全的加密会话不是重点吗?虽然Pointy的评论很贴切,但我还要补充一点,您应该确保您放在页面上的iFrame具有正确的src属性。如果它没有https src,当它被放到页面上,然后你尝试将其更改为https src时,浏览器会向你抛出讨厌的弹出框。我刚刚记住(几乎是重复的)。