如何检测是否在localhost上运行

Ale*_*nae 8 php apache localhost

我有一个PHP脚本,我想检测用户是否在本地计算机上运行,​​无法通过Internet访问.目前我检查服务器地址为127.0.0.1.这是最好的做法还是有更好的方法?

Rob*_*itt 12

Localhost总是转换为127.0.0.1IPv4或::1IPv6中的环回IP地址,因此验证应用程序中的IP是安全的,如果你的意思是

if(IPAddress::In(array("127.0.0.1","::1")))
{
     //Show Application
}
Run Code Online (Sandbox Code Playgroud)

我非常怀疑你的端口80之后会有一群精英黑客,但作为旁注,有一些关于依赖IP地址的缺陷的讨论,因为可以修改TCP数据包.

但这不应该让你担心.


Eri*_*ick 6

我不确定到目前为止答案是否正确,但可能是我感到困惑.我特别回答你的问题部分,"无法通过互联网访问".这是我尝试回答:

Web服务器(而不是PHP)侦听套接字并接受连接.PHP可以从$ _SERVER获取有关连接的信息(http://www.php.net/manual/en/reserved.variables.server.php).请注意,您所检查的所有内容都来自连接 - 您无法通过$ _SERVER的其他IP地址了解您的服务器是否可用.例如,我可以通过以下任何方式访问我的本地Apache/PHP实例:

所以,如果您的计划是在$ _SERVER ["SERVER_ADDR"]中看到"正确"值时应用程序的行为方式不同,那么您可能非常安全 - 也就是说,远程用户不太可能欺骗它客户.

说完所有这些之后,我不会使用这些技术中的任何一种来对用户进行身份验证,也不会对通过Internet提供的已部署应用程序上的用户权限/操作进行授权.唯一的例外可能是,如果你有一个完整的应用程序,只有在从localhost访问时才可用 - 那么这种技术可能具有良好的意义,并且对于个人应用程序来说足够安全.