JavaScript HTTPS 到 HTTP iFrame 安全问题

标签 javascript security http iframe https

我正在开发一个用户登录系统,我想出了一个解决方案,我想通过你们这些好人来确保我不会造成巨大的安全漏洞。

这就是我们所拥有的。

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

所以:

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

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

谢谢!

最佳答案

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

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

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

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

如果可以的话,最好的方法是在身份验证后继续使用没有 iframe 的 HTTPS。

关于JavaScript HTTPS 到 HTTP iFrame 安全问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6521523/

相关文章:

javascript - 确保数组中的值在推送时是唯一的

javascript - Strapi 从 3.0.x alpha 升级到 beta

c - 为什么这段代码容易受到缓冲区溢出攻击?

php - 什么是好的和安全的 session 名称?

ajax - 当客户端不使用 AJAX 时,可以响应 400 Bad Request 吗?

javascript - JS从HOVER到ONLOAD

javascript - 在图像标签 IE11 上添加自定义属性时无法发布表单?

c# - WPF PasswordBox 到底有多安全?

apache - 在 Apache 中使用 Access-Control-Allow-Origin header 处理多个域

OutputStream 上的 Java 自动 HTTP header