Nginx 正则求助!

2023-08-08 18:59:26 +08:00
 aeo13
网站被注入了,服务器网站很多包含不同服务器,目前得先拦截请求进来。
所有的请求规律都是以下这些
/?X0CVl=.xlsx20230808gGouW
/?XTf79=.ppt2022060887RX
/?aAuH9=.xlsx20230516hNvI
/?65si=.doc20230806AxhFq
麻烦帮我写一下 nginx 的规则把它跳到 403.

试了 GPT3.5 的好几个回答都不太靠谱,不兼容 nginx
location ~* /\?[a-zA-Z0-9]+=(\w+)\.\w+(\d{8})\w+ {
return 403;
}
637 次点击
所在节点    问与答
2 条回复
iBugOne
2023-08-08 19:03:43 +08:00
nginx location 只匹配 uri 的 path 部分,也就是 nginx 的 $uri 变量,你这个看情况是 path = root 但是带上了 query ,可以在 location = / 里套一个 if ($is_args = "?") { return 403; } 解决。其中 $is_args 是个自动变量,如果请求有 query parameters 它的值就是一个问号
ysc3839
2023-08-08 19:16:44 +08:00
用 if 匹配 $args 变量
https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#if
文档可以查到 if condition 的语法,用 ~ (区分大小写) 或 ~* (不区分大小写) 可以进行正则匹配。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/963494

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX