如何在 HTTP 标头中隐藏 PHP 版本号
PHP 配置默认允许服务器 HTTP 响应标头“ X-Powered-By ”显示服务器上安装的 PHP 版本。
出于服务器安全原因(虽然不是一个需要担心的主要威胁),建议您禁用或隐藏此信息,以防止攻击者通过想要知道您是否正在运行 PHP 来攻击您的服务器。
假设您服务器上安装的某个版本的 PHP 存在安全漏洞,而另一方面,攻击者知道这一点,他们将更容易利用漏洞并通过脚本访问服务器。
在我之前的文章中,我展示了如何隐藏 Apache 版本号,其中您已经看到了如何关闭 Apache 安装版本。但如果您在 Apache Web 服务器中运行 PHP,您还需要隐藏 PHP 安装版本,这就是我们在本文中要展示的内容。
因此,在本文中,我们将解释如何隐藏或关闭在服务器 HTTP 响应标头中显示 PHP 版本号。
此设置可以在已加载的 PHP 配置文件中配置。如果您不知道此配置文件在服务器上的位置,请运行以下命令来查找它:
$ php -i | grep "Loaded Configuration File"
---------------- On CentOS/RHEL/Fedora ---------------- Loaded Configuration File => /etc/php.ini ---------------- On Debian/Ubuntu/Linux Mint ---------------- Loaded Configuration File => /etc/php/7.0/cli/php.ini
在对 PHP 配置文件进行任何更改之前,我建议您首先备份您的 PHP 配置文件,如下所示:
---------------- On CentOS/RHEL/Fedora ---------------- $ sudo cp /etc/php.ini /etc/php.ini.orig ---------------- On Debian/Ubuntu/Linux Mint ---------------- $ sudo cp /etc/php/7.0/cli/php.ini /etc/php/7.0/cli/php.ini.orig
然后使用您最喜欢的具有超级用户权限的编辑器打开该文件,如下所示:
---------------- On CentOS/RHEL/Fedora ---------------- $ sudo vi /etc/php.ini ---------------- On Debian/Ubuntu/Linux Mint ---------------- $ sudo vi /etc/php/7.0/cli/php.ini
找到关键字expose_php
并将其值设置为Off:
expose_php = off
保存文件并退出。然后,按如下方式重新启动 Web 服务器:
---------------- On SystemD ---------------- $ sudo systemctl restart httpd $ sudo systemctl restart apache2 ---------------- On SysVInit ---------------- $ sudo service httpd restart $ sudo service apache2 restart
最后但同样重要的一点是,使用以下命令检查服务器 HTTP 响应标头是否仍显示您的 PHP 版本号。
$ lynx -head -mime_header http://localhost OR $ lynx -head -mime_header http://server-address
其中标志:
-head
– 发送针对 MIME 标头的 HEAD 请求。-mime_header
– 将获取的文档的 MIME 标头与其来源一起打印。
注意:确保您的系统上安装了lynx – 命令行网络浏览器。
就是这样!在本文中,我们解释了如何在服务器 HTTP 响应标头中隐藏 PHP 版本号,以保护 Web 服务器免受可能的攻击。您可以通过下面的评论表对这篇文章发表意见或提出任何相关问题。