3

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

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

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

4

4 回答 4

4

您需要检查HTTP 引荐来源网址

在 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

因为没有人知道秘密,所以可以保证请求来自远程服务器。当然,有人可能从远程服务器请求表单,窃取keyand token,然后将请求转发给自己......

于 2012-07-05T15:06:57.587 回答
1

你应该使用HTTP_REFERER. 但不能完全信任

$_SERVER['HTTP_REFERER']

看看这里,它记录在哪里:http: //php.net/manual/en/reserved.variables.server.php

于 2012-07-05T15:07:10.940 回答
1

采用

$_SERVER['HTTP_REFERRER']

获取发出请求的页面

于 2012-07-05T15:07:44.027 回答
1

你可以保存IP。gethostbyaddr($ip) 如果脚本自动执行,$_SERVER['HTTP_REFERRER']将不起作用。

于 2012-07-05T15:08:05.017 回答