1

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

4

3 回答 3

4

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

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

于 2013-02-07T19:10:29.803 回答
0

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

但是,您还应该通过https://. 请参阅WASP TLS 备忘单的第一条规则(此原则不仅适用于登录页面,还适用于任何类似的表单)。

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

于 2013-02-07T19:38:13.193 回答
0

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

于 2013-02-07T20:09:18.937 回答