Modsecurity - 阻止 request_uri 但返回代码 200

问题描述

我对 modsecurity 真的很陌生,我在理解规则编辑方面遇到了一些问题。

我需要向从以 /myendpoint/ 开头的特定端点到达的请求返回 200,但我仍然想拒绝端点执行任何其他操作。

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

# 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 但阻止请求进一步处理可以解决问题。

解决方法

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

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

,

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

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