我有一个脚本可以从其他网站(不同的域)向我的网站发出 POST 请求,我需要知道是否有可能获得其他域名的内容
赞: helloworld.com 使用我的脚本,并使用 mywebsite.com 执行 POST 请求。 mywebsite.com 如何知道该请求来自 helloworld.com ?
我尝试使用$_SERVER['REMOTE_HOST']
,但这不起作用。
答案 0 :(得分:3)
您需要检查HTTP referrer。
在PHP中,这将是$_SERVER['HTTP_REFERER'];
。
在JavaScript中,这将是document.referrer
。
请注意,它可能不准确并且很容易被欺骗,所以它的价值应该是一点点盐。
提供一些关于如何可靠地执行此操作的详细信息(尽管与远程服务器合作):
secret
为任意字符串(abc123
)。key
成为每个请求唯一的随机字符串(例如当前时间)token
生成md5(secret + key)
。key
和token
(但不 secret
)。md5(secret + key) === token
因为没有人知道这个秘密,所以可以保证请求来自远程服务器。当然,有人可以然后从远程服务器请求表单,窃取key
和token
,然后将请求转发给自己......
答案 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']
将无效。