0

如何在 PHP 中验证主机名?

也就是说,如果假设正在运行我的应用程序服务器,IP:192.168.1.77并且请求包含主机名,而不是192.168.1.77它不应该允许进一步处理。

任何帮助或建议将不胜感激。

4

3 回答 3

1

我会抛出一个未经授权的页面。错误提示主机名不匹配

做什么的?如果设置正确,这是 Web 服务器已经处理的事情:

如果您使用基于名称的虚拟主机,则节内的 ServerName 指定必须出现在请求Host:标头中的主机名以匹配此虚拟主机。

无需在 PHP 脚本中额外检查这一点。

会不会是额外的安全呐?这就是我的客户要求

这是完全没有意义的,不会增加任何安全性。但是,我想这样做也没有什么坏处。

于 2011-09-30T07:13:01.993 回答
0

我猜你的意思是地址,而不是主机名。

if ($_SERVER['REMOTE_ADDR'] !== '192.168.1.77') die(header("Location: /")); 

如果您真的不想检查用户主机名,请使用此

if ($_SERVER['REMOTE_HOST'] !== '192.168.1.77') die(header("Location: /")); 

更多信息http://php.net/manual/en/reserved.variables.server.php

于 2011-09-30T06:40:13.803 回答
0

我认为这是您必须在 Web 服务器配置中执行服务器端的操作。(.htaccess)

order deny, allow
deny from all
allow from 192.168.1.77
于 2011-09-30T06:40:19.250 回答