获取POST请求的域名

时间:2012-07-05 15:04:11

标签: php ajax post

我有一个脚本可以从其他网站(不同的域)向我的网站发出 POST 请求,我需要知道是否有可能获得其他域名的内容

赞: helloworld.com 使用我的脚本,并使用 mywebsite.com 执行 POST 请求。 mywebsite.com 如何知道该请求来自 helloworld.com

我尝试使用$_SERVER['REMOTE_HOST'],但这不起作用。

4 个答案:

答案 0 :(得分:3)

您需要检查HTTP referrer

在PHP中,这将是$_SERVER['HTTP_REFERER'];

在JavaScript中,这将是document.referrer

请注意,它可能不准确并且很容易被欺骗,所以它的价值应该是一点点盐。


提供一些关于如何可靠地执行此操作的详细信息(尽管与远程服务器合作):

  1. secret为任意字符串(abc123)。
  2. key成为每个请求唯一的随机字符串(例如当前时间)
  3. token生成md5(secret + key)
  4. 让远程服务器在POST请求中包含keytoken(但 secret)。
  5. 在您的服务器上,确保md5(secret + key) === token
  6. 因为没有人知道这个秘密,所以可以保证请求来自远程服务器。当然,有人可以然后从远程服务器请求表单,窃取keytoken,然后将请求转发给自己......

答案 1 :(得分:1)

您应该使用HTTP_REFERER。但它不能完全信任

$_SERVER['HTTP_REFERER']

请看一下这里记录的内容:http://php.net/manual/en/reserved.variables.server.php

答案 2 :(得分:1)

使用

$_SERVER['HTTP_REFERRER']

获取发出请求的页面

答案 3 :(得分:1)

你可以保存ip。 gethostbyaddr($ip) 如果脚本自动执行,$_SERVER['HTTP_REFERRER']将无效。

相关问题