如何安全地将内容从非安全页面发送到安全URL?

时间:2013-02-07 19:06:16

标签: javascript https security

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

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

这是您提交表单时最重要的操作网址,因此如果您的表单使用https://网址,则会向该网址发出POST请求,表明表单本身是否托管在http://上或https://页。

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

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

答案 2 :(得分:0)

HTTP页面上加载的JavaScript将被正在修改流量的攻击者所取代。修改后的JavaScript可以简单地将数据发布到公共区域。因此,无法将数据从HTTP页面安全地传输到HTTPS页面。除非你对“安全”有其他定义,否则我不知道?