代码之家  ›  专栏  ›  技术社区  ›  PKCS12

使用xsd验证xml的代理

  •  0
  • PKCS12  · 技术社区  · 7 年前

    我已经搜索了一段时间,寻找可以充当代理的东西,我可以向它提供xsd来验证HTTP通信请求体中的xml内容。

    有人知道Windows或Linux上是否存在这样的事情吗? 我签出了ModSecurity,但我对它有点迷茫-我相信SecRule XML可能可以做到,但我找不到如何根据多个xsd文件检查XML,看它是否传递了任何特定的xsd文件?

    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

    谢谢您!

    1 回复  |  直到 7 年前
        1
  •  1
  •   dune73    7 年前

    ModSecurity中的XML/XSD签入是可行的,但它并没有被很多人使用(与ModSec的核心功能不同),所以如果您发现了粗糙的边缘,我不会感到惊讶。

    是什么阻止你检查它们

    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