隱藏 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

This site uses Akismet to reduce spam. Learn how your comment data is processed.