【问题标题】:Proxy to validate xml with xsd使用 xsd 验证 xml 的代理
【发布时间】:2018-08-15 17:31:32
【问题描述】:

我一直在寻找可以充当代理的东西,我可以向它提供 XSD 以验证 HTTP 流量请求正文中的 xml 内容。

有谁知道 Windows 或 Linux 上是否存在这样的东西? 我检查了 ModSecurity,但我有点迷失了——我相信 SecRule XML 可能能够做到,但我找不到如何针对多个 xsd 文件检查 xml 以查看它是否通过了任何特定的文件?

validateSchema
Description: This operator requires the request body to be processed as XML.
Example:
SecDefaultAction log,deny,status:403,phase:2
SecRule REQUEST_HEADERS:Content-Type ^text/xml$ \
phase:1,t:lowercase,nolog,pass,ctl:requestBodyProcessor=XML
SecRule REQBODY_PROCESSOR "!^XML$" nolog,pass,skip:1
SecRule XML "@validateSchema /path/to/apache2/conf/xml.xsd"
This operator requires request body to be processed as XML.

https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual-(v2.x)#validateSchema

我认为有某种方法可以创建链式规则评估,如果满足任何规则,它允许消息通过,但在不满足任何规则时拒绝消息。

谢谢!

【问题讨论】:

    标签: proxy reverse-proxy mod-proxy mod-security mod-security2


    【解决方案1】:

    在 ModSecurity 中检查 XML / XSD 是可行的,但它并没有被很多人使用(不像 ModSec 的核心功能),所以如果你发现粗糙的边缘,我不会感到惊讶。 所以谨慎使用并考虑替代方案(-> mod_lua,使用 XML 库等)。

    是什么阻止你检查它们

    SecRule XML "@validateSchema /path/to/apache2/conf/xml.xsd"  "phase:2,id:1,log,deny"
    SecRule XML "@validateSchema /path/to/apache2/conf/xml2.xsd" "phase:2,id:2,log,deny"
    

    如果这样做,您还可以根据上下文分支和跳过规则。如Header-X,则通过id:1,如果Header-Not-X,则通过id:2。

    如果您缺乏 ModSecurity 知识来完成此任务,那么您可能需要购买 ModSec 手册或查看 https://netnea.com 的教程。

    【讨论】:

    • 有没有办法将请求正文传递给 lua 脚本?然后我可以使用命令行和第三方库进行验证!我在访问请求正文时遇到了问题!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-29
    • 1970-01-01
    • 2011-10-23
    • 2012-04-13
    • 1970-01-01
    相关资源
    最近更新 更多