我有一个脚本可以从其他网站(不同的域)向我的网站发出POST请求,我需要知道是否有可能获取其他域。
喜欢:helloworld.com使用我的脚本,并使用mywebsite.com执行POST请求。mywebsite.com如何知道请求来自helloworld.com?
我试过了,$_SERVER['REMOTE_HOST']
但这不起作用。
您需要检查HTTP 引荐来源网址。
在 PHP 中,这将是$_SERVER['HTTP_REFERER'];
.
在 JavaScript 中,这将是document.referrer
.
请注意,它可能不准确并且很容易被欺骗,所以它的价值应该用少许盐来衡量。
要提供有关如何可靠地执行此操作的更多详细信息(尽管需要远程服务器的合作):
secret
为任意字符串 ( abc123
)。key
是每个请求唯一的随机字符串(例如当前时间)token
由生成md5(secret + key)
。key
和token
(但不包含)。 secret
md5(secret + key) === token
因为没有人知道秘密,所以可以保证请求来自远程服务器。当然,有人可能会从远程服务器请求表单,窃取key
and token
,然后将请求转发给自己......
你应该使用HTTP_REFERER
. 但不能完全信任
$_SERVER['HTTP_REFERER']
看看这里,它记录在哪里:http: //php.net/manual/en/reserved.variables.server.php
采用
$_SERVER['HTTP_REFERRER']
获取发出请求的页面
你可以保存IP。gethostbyaddr($ip)
如果脚本自动执行,$_SERVER['HTTP_REFERRER']
将不起作用。