DoraemonWOO
V2EX  ›  问与答

Nginx 正则求助!

  •  
  •   DoraemonWOO · Aug 8, 2023 · 1443 views
    This topic created in 1035 days ago, the information mentioned may be changed or developed.
    网站被注入了,服务器网站很多包含不同服务器,目前得先拦截请求进来。
    所有的请求规律都是以下这些
    /?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  
       Aug 8, 2023 via Android
    nginx location 只匹配 uri 的 path 部分,也就是 nginx 的 $uri 变量,你这个看情况是 path = root 但是带上了 query ,可以在 location = / 里套一个 if ($is_args = "?") { return 403; } 解决。其中 $is_args 是个自动变量,如果请求有 query parameters 它的值就是一个问号
    ysc3839
        2
    ysc3839  
       Aug 8, 2023 via Android
    用 if 匹配 $args 变量
    https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#if
    文档可以查到 if condition 的语法,用 ~ (区分大小写) 或 ~* (不区分大小写) 可以进行正则匹配。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3124 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 14:07 · PVG 22:07 · LAX 07:07 · JFK 10:07
    ♥ Do have faith in what you're doing.