PHP -当域's IP是专用的时,检查域是否与服务器的IP匹配


PHP - check if domain matches server's IP when domain's IP is dedicated

我有一个远程登录脚本,用户托管(运行)在他的服务器上。在注册期间,用户需要指定他将登录的域。当用户在他的域中运行脚本并第一次登录到我的服务器时,我使用以下命令记录他的IP:

$ip_address = $_SERVER['REMOTE_ADDR'];

当用户第二次登录时,我检查他的IP地址是否仍然相同(使用上面相同的功能)。然后我检查他是否仍然使用相同的域,使用:

$domain = $_SERVER['HTTP_REFERER'];

最后,除了其他安全检查,我还检查指定的域是否真的指向IP地址使用:

$domain_ips_array = gethostbynamel($domain);
if (in_array($ip_address, $domain_ips_array)) {
    echo "Wonderful, domain really points to this IP";
}

但有一个问题,当域指向一个专用的IP。例如,如果服务器的IP(脚本实际托管的地方)是1.1.1.1(这个IP也由$_SERVER['REMOTE_ADDR']返回),但是域被配置为使用专用IP 1.1.1.2, gethostbynamel函数将只返回1.1.1.2,并且检查将失败(即使域实际上托管在IP地址1.1.1.1的服务器上)。

如何解决这个问题?简单地说,我需要确保用户总是在相同的IP/域中运行脚本,如果其中任何一个发生了变化,就会显示警告。

我认为你会有更好的运气重构一小部分你发送给用户的脚本。

例如,当第一次登录出现时,您可以看到来自请求服务器的IP。

施展魔法,将IP返回给脚本。然后把它存储在某个地方,然后总是发送。

这样,您将始终拥有第一个IP。然后检查$_SERVER变量。域名可以更改,我认为这不是那么可靠。

说得更简单,你需要把它存储在某个地方。

编辑

可以使用gethostbyaddr函数

这将返回IP的域。因此,您可以从第一个请求存储域,然后检查它与每一个其他。