Nginx 位置指令不阻止路径中带有“..”的 URI

问题描述 投票:0回答:1

为什么我的 nginx 位置块只适用于像

"https:/domain.com/foo/boo../"
这样的 URI,而不适用于像
"https:/domain.com/foo/../"
这样的 URI?

location ~* \.\./ {
    deny all;
}

我试图拒绝每一个包含

..
的请求是路径。

提前致谢:)

security nginx url webserver uri
1个回答
0
投票

因为您的浏览器本身将找到

/../
的两个点“解析”到上面的目录级别,所以实际上当您在浏览器中请求“https:/domain.com/foo/../”时,它会转到“https: /domain.com/"

换句话说,对于两个点被斜杠包围的情况,那里没有安全问题 - NGINX 永远不会看到这种情况下的两个点,没有“文件系统遍历”问题,因为客户端只是请求一个 URL。

您只需要保护隐藏文件的服务:

location ~ /\. {
    deny all;
}
© www.soinside.com 2019 - 2024. All rights reserved.