隐藏 HTTP 档头内 Apache, Nginx, PHP 的版本


在默认的情况下, HTTP 的 Header 会包含了 Web Server 及 PHP 的版本, 基于安全理由, 可以用以下方法隐藏 Apache, Nginx 及 PHP 的版本资讯。

Apache

开启 Apache 的 httpd.conf, CentOS 默认位置是 /etc/httpd/conf/httpd.conf:

# vi /etc/httpd/conf/httpd.conf

找到 “ServerTokens” 的一行, 如果没有这一行便直接加入到最后面, 默认值是 “Full”, 即显示所有版本资讯, 可以改成这样:

修改后需要重新启动 Apache:

# systemctl restart httpd

PHP

隐藏 PHP 版本需要修改 php.ini 档案, 在 RHEL, CentOS 及 Fedora, php.ini 的默认位是 /etc/php.ini, 如果不确定 php.ini 的位置, 可以用以下指令找出:

# php -i | grep “Loaded Configuration File”

知道 php.ini 的位置后, 用文字编辑器开启:

vi /etc/php.ini

找出以下一行:

expose_php = On

将 On 改为 Off, 档头便会将 X-Powered-By:PHP/7.x.x 的版本隐藏:

expose_php = Off

储存 php.ini 后重新启动 Apache:

# systemctl restart httpd

Nginx

开启 Nginx 的设定档 nginx.conf, CentOS 下的默认位置是 /etc/nginx/conf.d/nginx.conf

# vi /etc/nginx/conf.d/nginx.conf

在 http 段落加入 server_tokens off;

例如:

修改完成后, 重新启动 Nginx:

# systemctl restart nginx

之后便不会有 Nginx 的版本资讯了。

Leave a Reply