如何检查服务器令牌是否关闭?

fyb*_*tik 13 php nginx

我们从渗透测试报告中得到反馈说我们应该关闭服务器令牌。这是阻止人们能够看到我们正在使用的 PHP 版本,并限制他们定位特定 PHP 版本的能力。

我在 nginx.conf 的 http 块下添加了以下内容:

server_tokens off;
Run Code Online (Sandbox Code Playgroud)

但是我可以使用哪些工具来检查此更改是否已生效?

HBr*_*ijn 16

手册中您知道设置的作用:

语法server_tokens on | off;
默认server_tokens on;
上下文:http、服务器、位置

启用或禁用在错误消息和“服务器”响应标头字段中发出 nginx 版本。

所以你的选择是:

  • 生成错误消息,例如,如果您没有自定义 404 错误消息,只需请求一个不存在的页面,并且在页脚中您将不会再看到版本信息nginx/1.2.3
  • 检查服务器标头并确认不再显示版本。

查看 HTTP 响应标头的简单检查是手动连接,即:telnet www.example.com 80 客户端行是您输入的内容:

客户端:HEAD/HTTP/1.1
客户端:主机:www.example.com

服务器:HTTP/1.1 200 OK
服务器:日期:1970 年 1 月 1 日星期三 22:13:05 GMT
服务器:服务器:Nginx/1.2.3
服务器:连接:关闭
服务器:内容类型:文本/html


fyb*_*tik 7

经过更多的谷歌搜索,我发现 curl 命令可以检查显示服务器令牌和 php 版本的服务器标头:

curl -I -L www.example.com
Run Code Online (Sandbox Code Playgroud)

感谢 Alexey 指出 PHP 中所需的更改。

HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 04 Jun 2015 10:49:35 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: https://www.example.com

HTTP/1.1 200 OK
Server: nginx
Date: Thu, 04 Jun 2015 10:49:36 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Expires: Sun, 19 Nov 1978 05:00:00 GMT
Last-Modified: Thu, 04 Jun 2015 10:49:35 GMT
Cache-Control: no-cache, must-revalidate, post-check=0, pre-check=0
ETag: "1433414975"
Content-Language: en
Run Code Online (Sandbox Code Playgroud)