为什么我的 nginx 位置块只适用于像
"https:/domain.com/foo/boo../"
这样的 URI,而不适用于像"https:/domain.com/foo/../"
这样的 URI?
location ~* \.\./ {
deny all;
}
我试图拒绝每一个包含
..
的请求是路径。
提前致谢:)
因为您的浏览器本身将找到
/../
的两个点“解析”到上面的目录级别,所以实际上当您在浏览器中请求“https:/domain.com/foo/../”时,它会转到“https: /domain.com/"
换句话说,对于两个点被斜杠包围的情况,那里没有安全问题 - NGINX 永远不会看到这种情况下的两个点,没有“文件系统遍历”问题,因为客户端只是请求一个 URL。
您只需要保护隐藏文件的服务:
location ~ /\. {
deny all;
}