【问题标题】:Modsecurity - Block request_uri but return code 200Modsecurity - 阻止 request_uri 但返回代码 200
【发布时间】:2021-09-11 11:16:29
【问题描述】:

我是 modsecurity 的新手,在理解规则编辑时遇到了一些问题。

我需要将 200 返回到从以 /myendpoint/ 开头的特定端点到达的请求,但我仍然想拒绝端点做任何其他事情。

我在网上查过,但找不到适合我的解决方案。

# ModSec Rule Exclusion: 930100
SecRule REQUEST_URI "@beginsWith \/myendpoint\/" "phase:2,log,block,status:200,id:10000,ctl:ruleRemoveById=930100"

上面的规则看起来根本不起作用,请求仍然被阻止,但没有返回状态 200。

我需要这个,因为我已将端点集成到 Telegram 机器人,但如果它收到 403,机器人将持续发送相同的消息 24 小时。 我认为返回 200 但阻止请求更进一步会解决问题。

【问题讨论】:

    标签: security nginx endpoint owasp mod-security


    【解决方案1】:

    明确一点:您想阻止请求但仍返回 HTTP 代码 200?

    顺便说一句,不要转义 URI: "@beginsWith /myendpoint/"

    【讨论】:

    • 是的,这就是我想要实现的。为什么我不应该那样逃避它?我应该通过提供相等来完全逃避uri?如果是,那么正确的解决方案是什么?
    • 这是正确的语法:SecRule REQUEST_URI "@beginsWith /myendpoint/" "phase:2,log,...
    • 啊转义斜线:) 顺便说一句,这是正确的,我只想返回代码 200 但仍然阻止请求。它不适用于此SecRule REQUEST_URI "@beginsWith /myendpoint/" "phase:2,log,block,status:200,id:10000,ctl:ruleRemoveById=930100"
    • 我认为这是不可能的。你为什么要这样做呢?这些请求真的很糟糕并且需要被阻止吗?也许只是在应用程序级别忽略它们?
    • 在这种情况下,我是否可以只忽略该特定端点的规则,以便为其他端点保持打开状态?
    【解决方案2】:

    这是一个非常特殊的需求。但无论如何,Azurit 已经指出了斜线的问题。我认为另一个问题是block 的使用。我会做一个deny 结合状态。令我惊讶的是,这行得通。

    SecRule REQUEST_URI "@beginsWith /myendpoint/" "id:1000,phase:1,deny,status:200"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-29
      • 1970-01-01
      • 2021-04-25
      • 2019-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多