漏洞扫描:在应用程序中发现不必要的 Http 响应头。解决报错:error: ‘ngx_http_headers_in_t’ has no member named ‘cookies’ ...
从nginx1.23.0开始,所有的头都以链表的形式返回,而不是数组。v0.34 解决了这个问题。因为我的nginx是1.23.1,所以我用v0.33不行,要用v0.34这个版本。重启nginx: systemctl restart nginx。在浏览器里面就看不到 server: nginx/1.23.1。修改nginx.conf。写到这里,先上错误的截图。修改nginx.conf。再看看正确的
漏洞扫描,不能显示nginx及版本号,如下:

解决方法1:隐藏版本号
修改nginx.conf
http{
...
server_tokens off;
}

后面的版本号没了
解决方法2:彻底彻底去掉 server
安装一个插件
/usr/local/nginx/sbin/nginx -V

官方的安装教程

写到这里,先上错误的截图

去Issues看看
https://github.com/openresty/headers-more-nginx-module/issues/138
since nginx 1.23.0, all headers are now returned as a linked list, as opposed to an array.
v0.34 seems to deal with the changes nicely!
从nginx1.23.0开始,所有的头都以链表的形式返回,而不是数组。v0.34 解决了这个问题。
因为我的nginx是1.23.1,所以我用v0.33不行,要用v0.34这个版本。
再看看正确的处理方法
mkdir -p /opt/tools
cd /opt/tools
wget https://github.com/openresty/headers-more-nginx-module/archive/v0.34.tar.gz
tar -xzvf v0.34.tar.gz
cd /opt/nginx-1.23.1/
./configure --prefix=/usr/local/nginx --add-module=/opt/tools/headers-more-nginx-module-0.34
make
make install
修改nginx.conf
http{
...
more_clear_headers 'Server';
}
重启nginx: systemctl restart nginx
在浏览器里面就看不到 server: nginx/1.23.1
/usr/local/nginx/sbin/nginx -V

二、检测到隐藏目录

经过测试,浏览器显示403

403 Forbidden 响应暴露了存在此目录,即使不允许对其进行访问。
解决办法:在nginx的html目录新建404.html
<html>
<head><title>404</title></head>
<meta charset="utf-8">
<body bgcolor="white">
<center><h1>404 - Not Found</h1></center>
</body>
</html>

修改nginx.conf
server {
...
error_page 403 =404 /404.html;
}
再测试

三、Nginx 禁用方法
GET、HEAD、POST、PUT、PATCH、DELETE、OPTIONS
在 server { 下一行添加一下代码即可关闭除 GET|POST|HEAD 外的请求方式。
if ($request_method !~* GET|POST|HEAD) {
return 403;
}
更多推荐
所有评论(0)