天天看点

如何在 HTTP 头中隐藏 PHP 版本号

php 配置默认允许服务器在 http 响应头 <code>x-powered-by</code> 中显示安装在服务器上的 php 版本。

出于服务器安全原因(虽然不是主要的要担心的威胁),建议你禁用或隐藏此信息,避免那些针对你的服务器的攻击者知道你是否运行了 php。

假设你服务器上安装的特定版本的 php 具有安全漏洞,而攻击者了解到这一点,他们将更容易利用漏洞并通过脚本访问服务器。

因此,在本文中,我们将解释如何隐藏或关闭服务器 http 响应头中的 php 版本号。

此设置可以在加载的 php 配置文件中配置。如果你不知道此配置文件在服务器上的位置,请运行以下命令找到它:

<code>$ php -i | grep "loaded configuration file"</code>

php 配置文件位置

<code>---------------- 在 centos/rhel/fedora 上----------------</code>

<code>loaded configuration file =&gt; /etc/php.ini</code>

<code>---------------- 在 debian/ubuntu/linux mint 上----------------</code>

<code>loaded configuration file =&gt; /etc/php/7.0/cli/php.ini</code>

在对 php 配置文件进行任何更改之前,我建议您首先备份您的 php 配置文件,如下所示:

<code>----------------在 centos/rhel/fedora 上----------------</code>

<code>$ sudo cp /etc/php.ini /etc/php.ini.orig</code>

<code>$ sudo cp /etc/php/7.0/cli/php.ini /etc/php/7.0/cli/php.ini.orig</code>

用你最喜欢的编辑器,使用超级用户权限打开文件:

<code>$ sudo vi /etc/php.ini</code>

<code>----------------在 debian/ubuntu/linux mint 上----------------</code>

<code>$ sudo vi /etc/php/7.0/cli/php.ini</code>

定位到关键词 <code>expose_php</code>,并将值设置成 <code>off</code>:

<code>expose_php = off</code>

保存并退出文件。之后,重启 web 服务器:

<code>---------------- 使用 systemd ----------------</code>

<code>$ sudo systemctl restart httpd 或</code>

<code>$ sudo systemctl restart apache2</code>

<code>---------------- 使用 sysvinit ----------------</code>

<code>$ sudo service httpd restart 或</code>

<code>$ sudo service apache2 restart</code>

最后,不过同样重要,使用下面的命令检查服务器 http 响应头是否仍然显示你的 php 版本号。

<code>$ lynx -head -mime_header http://localhost</code>

<code>或者</code>

<code>$ lynx -head -mime_header http://server-address</code>

这里的标志含义是:

<code>-head</code> – 发送一个请求 mime 报头的 head 请求。

<code>-mime_header</code> – 打印所提取文档的 mime 标头及其源代码。

就是这样了!在本文中,我们解释了如何隐藏服务器 http 响应头中的 php 版本号以保护 web 服务器免受可能的攻击。

原文发布时间为:2017-02-05

本文来自云栖社区合作伙伴“linux中国”