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

Javascript 如何将内容从非安全页面安全地发送到安全URL?,javascript,https,security,Javascript,Https,Security,我有一个JavaScript代码片段,旨在嵌入到任何网页中。此代码段将表单加载到其嵌入的页面中。然后,代码段将表单数据发送到安全URL。问题是,代码段加载表单的页面可能不安全,但我需要将表单数据安全地传输到安全的外部URL。如果可能,我如何实现这一点?如果表单的ACTION属性将其指向HTTPS目标,则内容将被加密并安全地传输到目标,而不管表单HTML本身最初是如何传输的:当用户提交表单时,浏览器启动新连接并发出POST请求(我假设表单的方法是POST,而不是GET)针对目标,而不是当前浏览器位

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

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


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

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


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

提交表单时,动作URL很重要,因此如果表单使用
HTTPS://
URL,它将使对该URL的POST请求,无论表单本身是否托管在
http://
https://
页面上

但是,您还应该通过https://为表单页面提供服务。请参阅(此原则不仅适用于登录页面,而且适用于任何类似的表单)


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

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

但是,您还应该通过https://为表单页面提供服务。请参阅(此原则不仅适用于登录页面,而且适用于任何类似的表单)


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

HTTP页面上加载的JavaScript将被修改您流量的攻击者替换。修改后的JavaScript只需将数据发布到某个地方即可。因此,无法将数据从HTTP页面安全传输到HTTPS页面。除非您对“安全”有其他一些定义我丢失了什么?

HTTP页面上加载的JavaScript将被修改您流量的攻击者替换。修改后的JavaScript只需将数据发布到某个地方即可。因此,无法将数据从HTTP页面安全传输到HTTPS页面。除非您对“安全”有其他定义我缺少的是?

安全是指HTTPS吗?是的,这就是我的意思。安全是指HTTPS吗?是的,这就是我的意思。即使是iframe,如果外部页面通过纯HTTP,也会显示。如果您的JS和表单仅通过HTTPS传输(并拒绝访问HTTP请求),您已经做了所有可以做的。如果MITM通过HTTP截获外部页面并重写