指南 · 约 3 分钟阅读

如何隐藏服务器、PHP 和 WordPress 版本

简短回答:在 nginx 中设置 server_tokens off;,在 Apache 中设置 ServerTokens Prod 和 ServerSignature Off,在 php.ini 中设置 expose_php = Off,并移除 WordPress 的 generator 标签。这样自动化工具就无法把你的确切版本与已知漏洞利用对应起来。这只是一个小的补充,而不是修复:过时的软件仍然需要更新。

更新于 · HackGrade

代码和配置保持英文。

查看你暴露了什么

Terminal
curl -sI https://yourdomain.com | grep -iE '^(server|x-powered-by):'
curl -s https://yourdomain.com | grep -io '<meta name="generator"[^>]*>'

nginx

nginx
server_tokens off;   # in the http { } block

Apache

这些配置要放在服务器主配置中(不是 .htaccess)。修改后重启 Apache。

apache2.conf / httpd.conf
ServerTokens Prod
ServerSignature Off

PHP

php.ini
expose_php = Off

如果使用共享主机,请在控制面板中查找 PHP 设置页面。如果你自己管理服务器,请重启 PHP-FPM。

WordPress

PHP
<?php
// wp-content/mu-plugins/no-generator.php
remove_action( 'wp_head', 'wp_generator' );
add_filter( 'the_generator', '__return_empty_string' );

同时删除网站根目录下的 readme.html(每次更新后它都会回来,所以每次更新后都要检查)。

为什么更新更重要

攻击者经常不先检查版本就直接尝试漏洞利用。隐藏版本号只是去掉了一个容易获取的线索,旧版本唯一真正的修复方法是更新。HackGrade 把可见的版本号评为低风险,把已停止支持的 PHP 版本评为更高风险。

常见问题

隐藏版本号会提高我的安全评级吗?

会略有提高。版本泄露属于低严重程度的问题。更新过时的软件影响要大得多。

可以完全删除 Server 响应头吗?

使用标准的 nginx 或 Apache 做不到,但可以把它缩减为只显示产品名称。一些 CDN 会把它替换成自己的名称。

隐藏 WordPress 版本能阻止别人检测插件版本吗?

不能。插件和主题文件通常带有自己的版本字符串。请保持它们更新。

参考资料

相关指南

免费 · 即时 · 无需注册

抢在别人之前了解你的评级。

被动扫描。未经你的许可,不会进行任何攻击性检测。

免费开始。付费套餐每月 12 美元起,或 29 美元购买单次报告。 查看价格