存储引用站点名称和IP地址的困难

时间:2017-05-24 12:11:13

标签: php curl joomla3.0 http-referer

我的场景是这样的:第一个站点通过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站点。

1 个答案:

答案 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;
}