在 Nginx 中拒绝带有特殊 Unicode 字符的请求

在 Nginx 中拒绝带有特殊 Unicode 字符的请求

我想阻止/拒绝所有包含一个或多个非 ASCII 字符的请求。

例如,我收到如下请求:

/\ufffd?s=p&z=\ufffd&g=\ufffd&o=2

其中 \ufffd 是“替换字符“。

这导致我的网络应用程序通过电子邮件向我发送错误,因为我的数据库还不是 UTF-8(长话短说)。

我知道我应该解决这个问题,而不是隐藏它,但在此之前,阻止所有奇怪的请求进入应用程序将防止我的邮箱被错误填满。

我还知道该特定网站的所有 URL 均不包含非 ASCII 字符,因此这个快速修复不会破坏任何内容。

谢谢!

答案1

您可以在 location 指令中使用替换字符本身来匹配这样的 url:

location /� {
  return 400; # Or whatever you would like to do.
}

相关内容