如何在 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 服务器免受可能的攻击。您可以在这篇文章中添加意见,或者通过下面的评论表提出任何相关问题。