我在nginx后面的Web应用程序不应接收任何包含相对路径(例如../
)的url,在Nginx级别直接拒绝它们会更安全。
尝试了此配置,但不起作用:
location ~ \.\.\/ {
return 400;
}
带有测试用例:
printf "GET /web/../play/find.js HTTP/1.1\r\nHost: www.example.com\r\n\r\n" | nc 127.0.0.1 80
答案 0 :(得分:0)
在@RichardSmith的帮助下,人们可以在任何位置匹配之前添加此正则表达式测试:
if ($request_uri ~ "\.\./"){
return 403;
}
location / {
proxy_pass http://localhost:8095;
}