如何在Nginx中拒绝包含点点斜杠的路径(相对路径)?

时间:2018-09-12 09:22:32

标签: nginx nginx-location

我在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

1 个答案:

答案 0 :(得分:0)

在@RichardSmith的帮助下,人们可以在任何位置匹配之前添加此正则表达式测试:

if ($request_uri ~ "\.\./"){
    return 403;
}

location / {
    proxy_pass http://localhost:8095;
}