【问题标题】:JavaScript HTTPS to HTTP iFrame Security QuestionJavaScript HTTPS to HTTP iFrame 安全问题
【发布时间】:2011-09-25 04:16:15
【问题描述】:

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

这就是我们所拥有的。

您从一个 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,但我想在展示它之前验证这不是一个非常糟糕的做法。

谢谢!

【问题讨论】:

  • 认证后为什么要返回HTTP??建立安全的加密会话不是重点吗?
  • 虽然 Pointy 对他的评论非常满意,但我还要补充一点,您应该确保拖放到页面上的 iFrame 在它内联时具有正确的 src 属性。如果它被拖放到页面上时没有 https src,然后您尝试将其更改为 https src,浏览器会向您抛出令人讨厌的弹出框。

标签: javascript security http iframe https


【解决方案1】:

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-31
  • 2011-07-06
相关资源
最近更新 更多