Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP,如何判断请求是否源自托管服务器?_Php_Security - Fatal编程技术网

使用PHP,如何判断请求是否源自托管服务器?

使用PHP,如何判断请求是否源自托管服务器?,php,security,Php,Security,是否有可靠的方法使用PHP确定请求是否来自托管PHP脚本的同一主机?换句话说,是否有办法确定客户端和服务器计算机是否相同?您可以定义一个只有服务器知道您可以与请求一起发送的秘密令牌。嗯,这听起来像是一种常用于防止(跨站点请求伪造)的令牌机制可能是你问题的解决办法。这将允许您通过比较令牌等来确保请求来自某个来源。这里有几个链接,提供了更多的实现细节:这是我认为我们应该退后一步问的问题,您为什么要这样做 通过您所述的方法确定请求是否来自本地计算机存在问题,其中最重要的问题是虚拟接口和多主(这意味着一

是否有可靠的方法使用PHP确定请求是否来自托管PHP脚本的同一主机?换句话说,是否有办法确定客户端和服务器计算机是否相同?

您可以定义一个只有服务器知道您可以与请求一起发送的秘密令牌。

嗯,这听起来像是一种常用于防止(跨站点请求伪造)的令牌机制可能是你问题的解决办法。这将允许您通过比较令牌等来确保请求来自某个来源。这里有几个链接,提供了更多的实现细节:

这是我认为我们应该退后一步问的问题,您为什么要这样做

通过您所述的方法确定请求是否来自本地计算机存在问题,其中最重要的问题是虚拟接口和多主(这意味着一台计算机可以有许多IP地址,而服务器可能只绑定到其中的一部分)

如果您打算使用来自本地的请求作为某些特权的某种检查,我的建议是不要。是的,有人可以欺骗IP地址(但他们不会得到回复),但这可能仍然足够

如果您正在创建某种管理页面或站点,那么我的建议是将其绑定到localhost(127.0.0.1)并解决问题(基本上)

另外,如果客户机和服务器在同一台机器上,而您没有做一些特殊的页面或站点,那么为什么他们需要通过网站进行通信?您可以在本地运行脚本


基本上,这取决于具体情况。

100%同意你的最后一点,我还有其他脚本,它们完全不可从web访问,而是从控制台运行。解释起来很复杂,但在这种情况下我不能这么做。