我的场景是这样的:第一个站点通过php curl向第二个站点发送带有各种参数的请求作为查询字符串。第二个站点类方法通过对传入参数进行各种比较来处理请求,并通过这种方式将一些数据与引用站点(第一站点)名称和IP地址一起存储在表中 -
$url = parse_url($_SERVER['HTTP_REFERER']);
$ref_site = $url['host'];
$ref_site_ip = gethostbyname($ref_site);
但是当我测试它时,它在我的生产服务器中不起作用,$ ref_site和$ ref_site_ip变量没有价值意味着$ _SERVER ['HTTP_REFERER']因多种原因无效,可能是第一个网站的卷曲请求....
以下工作是否正常?
$_SERVER['REMOTE_ADDR'], $_SERVER['REMOTE_HOST']
看起来像$ _SERVER ['REMOTE_ADDR']我看到一个IP地址,我没有完全验证它是否是引用站点(第一站点)ip或第二站点ip,我会尽快更新它。 / p>
现在还有什么其他方法可以引用网站名称和IP?
仅供参考我将无法控制第一站点代码,因为这些站点将是各种用户,并且这些站点代码使用curl发送请求,我肯定知道这些是我已知的cms站点。
答案 0 :(得分:0)
您可以稍后在.htaccess
中使用IP保护。
这将阻止文件夹cron
<FilesMatch "cron\.php$">
Order deny,allow
Deny from all
Allow from 10.0.0.0/24
</FilesMatch>
这只会阻止名为cron.php
<Files "cron.php">
Order deny,allow
Deny from all
Allow from 10.0.0.0/24
</Files>
现在为了您的安全。最好的方法是为每个查询创建哈希。例如,在发送请求的文件中。
$time = time();
$secret = 'MySecretWord';
// Your IP address that will be detected in $_SERVER['REMOTE_ADDR'] on accepting server
$ip = '10.10.10.10';
$hash = md5($time.$ip.$secret);
现在,您将此$hash
和$time
添加到GET请求中。并在接受网站
$ip = $_SERVER['REMOTE_ADDR']
$time = $_GET['time'];
$secret = 'MySecretWord';
$hash = md5($time.$ip.$secret);
if($hash != $_GET['hash'])
{
echo "Back off a*hole!";
exit;
}