在預設的情況下, 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”, 即顯示所有版本資訊, 可以改成這樣:
1 |
ServerTokens Prod |
修改後需要重新啟動 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;
例如:
1 2 3 4 5 6 7 |
http { ...... 其他設定 server_tokens off; ...... 其他設定 } |
修改完成後, 重新啟動 Nginx:
# systemctl restart nginx
之後便不會有 Nginx 的版本資訊了。