V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
aeo13
V2EX  ›  问与答

Nginx 正则求助!

  •  
  •   aeo13 · 267 天前 · 446 次点击
    这是一个创建于 267 天前的主题,其中的信息可能已经有所发展或是发生改变。
    网站被注入了,服务器网站很多包含不同服务器,目前得先拦截请求进来。
    所有的请求规律都是以下这些
    /?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;
    }
    iBugOne
        1
    iBugOne  
       267 天前 via Android
    nginx location 只匹配 uri 的 path 部分,也就是 nginx 的 $uri 变量,你这个看情况是 path = root 但是带上了 query ,可以在 location = / 里套一个 if ($is_args = "?") { return 403; } 解决。其中 $is_args 是个自动变量,如果请求有 query parameters 它的值就是一个问号
    ysc3839
        2
    ysc3839  
       267 天前 via Android
    用 if 匹配 $args 变量
    https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#if
    文档可以查到 if condition 的语法,用 ~ (区分大小写) 或 ~* (不区分大小写) 可以进行正则匹配。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2464 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 13:03 · PVG 21:03 · LAX 06:03 · JFK 09:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.