如何从操作指向其他域的POST表单中获取域/推荐人名称

时间:2019-06-02 00:12:23

标签: php html forms symfony

我在 domain-x.com 上有一个表格。它将表单数据发送到另一个处理它的 domain-y.com 服务。

<form method="POST" action="https://domain-y.com/">
  <input type="email" name="email" placeholder="Your email">
  <button type="submit">Send</button>
</form>

我如何获取引荐来源或确保此表单的请求来自 domain-x.com

我使用Symfony\Component\HttpFoundation\Request,但其中不包含有关domain-x.com的任何信息

$_SERVER['HTTP_REFERER']不起作用

编辑: 我不想更改表格。问题是通过请求以某种方式我应该能够从哪里来请求...

2 个答案:

答案 0 :(得分:0)

您可以添加一个隐藏字段。

<input type='hidden' name='referrer' value='<?=$_SERVER['SERVER_NAME']?>'/>

但是,将表单发布到一个完全不同的域似乎很不合常规。

您可以欺骗$_SERVER['HTTP_REFERER'],所以这两种方法都不完全可靠

HTTP_REFERER上的文档

  

将用户代理引至当前页面的页面地址(如果有)。这是由用户代理设置的。并非所有的用户代理都将设置此功能,有些用户代理提供了将HTTP_REFERER修改为功能的功能。简而言之,它不能真正被信任。

https://php.net/manual/en/reserved.variables.server.php

答案 1 :(得分:0)

我无法通过前任的原因。请求服务器中的引荐来源或其他任何标识符标头是我的测试服务器上缺少 SSL 证书。

这意味着要采取形式操作,我必须将网址从 http 更改为 https 并创建SSL证书