是否有可能从PHP中发布的值中获取URL值?

时间:2013-02-13 07:04:06

标签: php forms post

我正在处理从域到另一个域的表单POSTING值(例如:www.something1.comwww.something2.com)。

如何验证请求是从www.something1.com发布的?或其他地方。

  • 是否可以获取传入的请求URL?
  • 有没有其他方法可以验证它?

3 个答案:

答案 0 :(得分:3)

检查$_SERVER['HTTP_REFERER']的值。某些浏览器可能会隐藏或欺骗此标头,但大多数浏览器都会正确发送它。

但是请记住,没有办法保证正确的推荐,很容易伪造。

答案 1 :(得分:3)

将我的评论放在答案表单中,因为我不相信任何当前的答案可以解决您的主要问题。您希望验证表单在提交到其他域时显示的源域。

简短回答是,您无法对其进行验证(至少出于安全原因)。根据{{​​3}}:

,可用于为您提供第一个域的选项为$_SERVER['HTTP_REFERER']
  

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

问题在于客户端提交表单,发送到“server2”的所有数据可以/将被恶意用户修改以绕过任何安全/验证有到位。唯一的另一种选择是将一些需要提交的验证与表单一起提交,但是使其接近有效的唯一方法是更改​​它,并经常更改它。 (也就是说,每一分钟?)。但无论你添加什么,都需要提交 - 恶意用户可以完全控制发送的所有内容。

答案 2 :(得分:0)

您可以将网址作为参数“http://site.com/page2.php?prevUrl=”。urlencode(“http://site.com/page1.php”)传递。

希望有所帮助