网站搜索

如何在 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

其中标志:

  1. -head – 发送 MIME 标头的 HEAD 请求。
  2. -mime_header – 打印所获取文档的 MIME 标头及其源。

注意:确保您的系统上安装了 lynx – 命令行网络浏览器。

就是这样!在本文中,我们解释了如何在服务器 HTTP 响应标头中隐藏 PHP 版本号,以保护 Web 服务器免受可能的攻击。您可以在这篇文章中添加意见,或者通过下面的评论表提出任何相关问题。