![在 Nginx 中拒绝带有特殊 Unicode 字符的请求](https://linux22.com/image/631057/%E5%9C%A8%20Nginx%20%E4%B8%AD%E6%8B%92%E7%BB%9D%E5%B8%A6%E6%9C%89%E7%89%B9%E6%AE%8A%20Unicode%20%E5%AD%97%E7%AC%A6%E7%9A%84%E8%AF%B7%E6%B1%82.png)
我想阻止/拒绝所有包含一个或多个非 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.
}