【问题标题】:How to securely send content from non-secure page to a secure URL?如何安全地将内容从非安全页面发送到安全 URL?
【发布时间】:2013-01-23 09:59:35
【问题描述】:

我有一个旨在嵌入任何网页的 JavaScript sn-p。这个 sn-p 将一个表单加载到它所嵌入的页面中。然后 sn-p 将表单数据发送到一个安全的 URL。这是问题所在,sn-p 加载表单的页面可能不安全,但我需要将表单数据安全地传输到安全的外部 URL。如果可能,我该如何实现?

【问题讨论】:

  • 安全是指HTTPS吗?
  • 是的,我就是这个意思。

标签: javascript https security


【解决方案1】:

HTTP 页面上加载的 JavaScript 将被正在修改您的流量的攻击者替换。修改后的 JavaScript 可以简单地将数据发布到某个地方的公众。因此,不可能安全地将数据从 HTTP 页面传输到 HTTPS 页面。除非你有我遗漏的其他“安全”定义?

【讨论】:

    【解决方案2】:

    如果表单的 ACTION 属性将其定向到 HTTPS 目标,那么无论表单 HTML 本身最初是如何传输的,内容都会被加密并安全传输到目标:当用户提交表单时,浏览器会启动一个新的连接并针对目标而不是当前浏览器位置发出 POST 请求(我假设您的表单的 METHOD 是 POST,而不是 GET)。在这种情况下,该 POST 通过 HTTPS 进行,因为目标是“https://...”。

    这并没有说明 XSS 的固有安全风险或可能嵌入在不安全页面上的东西,或者当 HTML 通过您的 JavaScript 通过 HTTP 传输时针对表单 HTML 的 MITM 攻击......您必须做出决定如果这些考虑对您的项目是值得的。也许您的 JavaScript 可以在其中嵌入带有表单的 IFRAME(对 IFRAME 的 SRC 使用 HTTPS)而不是 FORM 本身;这就是 Facebook 和其他人为防止在不安全页面上运行的其他脚本访问表单及其数据所做的事情 - 浏览器将根据其同源策略阻止来自其他脚本的此类尝试(每个流行的现代浏览器都可以依靠这样做),并且当 IFRAME 请求时,表单通过 HTTPS 传输。当表单的内容需要安全且您无法控制表单的嵌入位置时,这是将表单传送到任意站点的首选方式。

    【讨论】:

    • 即使是 iframe,如果外部页面通过普通 HTTP,也会显示 similar risks
    • 如果你的 JS 和表单只通过 HTTPS 传输(并且拒绝访问 HTTP 请求),那么你已经做了你能做的。如果 MITM 通过 HTTP 拦截外部页面并重写您的 JS 嵌入以删除 HTTP IFRAME,它无论如何都不会加载您的表单。他们真正能做的就是拦截你的 JS,杀死它,然后从头开始注入他们自己的表单。那时您无能为力 - 即使您通常不以任何方式提供表单,他们也可以重写页面并创建令人信服的仿冒品并将其插入。如果 URL 错误或缺少锁定图标,所有人都会点击。
    • 确实,如果外部页面是纯HTTP,你不能保证什么。
    • 由于大多数用户忽略了锁定图标(而且 SSL 作为身份验证机制无论如何都被完全破坏了),任何人都可以伪造任何页面,使其看起来像任何其他页面的合法登录门户,即使你不这样做' t 提供登录嵌入功能。所以我认为我们能做的最好的事情就是减轻我们所能做的,并接受没有完美的解决方案,特别是如果他们已经获得了 MITM 或 MITB 访问权限。 2因素/带外验证?欧洲黑客破解了结合 Android 特洛伊木马,所以它仍然只是缓解,没有真正的答案。
    【解决方案3】:

    当您提交表单时,操作 URL 很重要,因此如果您的表单使用 https:// URL,无论表单本身是托管在 http:// 还是 https:// 上,它都会向该 URL 发出 POST 请求页面。

    但是,您还应该通过https:// 提供表单页面。请参阅first rule of the WASP TLS cheat sheet(此原则不仅适用于登录页面,也适用于任何类似的表单)。

    问题在于,如果不通过https:// 在用户可以看到验证的地址上提供表单页面,用户就无法相信 MITM 攻击者没有更改此表单。例如,这样的攻击者可以透明地替换 action 属性以重定向到另一个站点,或者注入一些 JavaScript 来记录输入该表单的每个密钥,以收集敏感数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多