当前位置: 首页 > 知识库问答 >
问题:

Mod安全性-使用xml的请求正文

潘驰
2023-03-14

在mod security中,请使用secrule request_body:https://github.com/spiderlabs/modsecurity/wiki/reference-manual#request_body,但在尝试解析XML body中Soap操作的缓冲区时,不能处理它。

保存原始请求正文。只有在使用了URLENCODED请求主体处理器的情况下,或者在强制使用URLENCODED请求主体解析器的情况下,该变量才可用,默认情况下,当检测到application/x-www-form-UrlenCoded内容类型时,会出现这种情况。

我试试这个:

SecRuleEngine on
SecRequestBodyAccess On
SecRule REQUEST_HEADERS:Content-Type "text/xml" "id:'200000',phase:1,t:none,t:lowercase,pass,nolog,ctl:requestBodyProcessor=XML"
SecRule REQUEST_BODY "<password>\w{0,5}<\/password>" "id:77777771,log,deny,msg:'Week password'"

并且在post缓冲区中:

POST / HTTP/1.1
...
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-Type: text/xml; charset=utf-8
SOAPAction: ""
Content-Length: 200

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <SOAP-ENV:Body>
    <tns:authenticate xmlns:tns="http://.../">
      <password>abc</password>
      ...

如何检测SOAP数据的响应体并拒绝匹配expreg值?

共有1个答案

奚和光
2023-03-14

我在https://serverfault.com/questions/727596/mod-security-how-to-process-text-xml-request-body中找到了一个解决方案

SecRequestBodyAccess On
SecRule REQUEST_HEADERS:Content-Type "text/xml" "phase:1,nolog,pass,ctl:requestBodyProcessor=URLENCODED,id:12345"
SecRule REQUEST_BODY "<password.*?>.{0,6}?</password>" "phase:2,t:none,deny,msg:'Very short password',status:403,auditlog,id:67890"
 类似资料:
  • 我正在使用JMS(ActiveMQ)作为登录服务实现一个请求-回复模式。一切都很好。我在消息中发送用户名和密码,然后用数据库中的加密检查密码的加密版本。这部分我使用JASPYT。 我担心的是通过JMS发送未加密的密码。这样的做法会给我带来安全隐患吗?不幸的是,JASPYT库不允许我将摘要与另一个摘要进行比较,只允许将原始密码与保存的摘要进行比较;这就是为什么我要通过网络发送密码。 消息是否可能被拦

  • 问题内容: 我正在将Ubuntu 14.04(Trusty Tahr)与Python 2.7.6版一起使用。今天,当我创建一个新尝试并尝试做时,出现了错误。 我通过 使用Requests包时 遵循 _SSLInsecurePlatform错误中的说明解决了此问题。 但是我想了解这两个命令和之间的实际区别是什么 。 为什么前者要另外安装三个软件包? 将代码推送到生产环境时,我需要注意什么事情? 他们

  • 问题内容: 这些组合似乎无效。 头由于某种原因未设置。 问题答案: 只需直接发送xml字节即可: 输出量

  • 我用apache安装了docker自定义映像。我必须在docker conatiner上安装libapache2 mod security,我在docker容器中使用下面的命令,但出现错误。 apt-get安装libapache2-mod-Security root@8e8d98a4910e:/opt-获取安装libapache2-mod-安全读取包列表构建依赖树读取状态信息...完成E:无法定位

  • 有什么方法可以使用< code > org . spring framework . security . config . annotation . web . builders . http security 授权post请求到特定的url? 我使用作为: 我想允许POST请求发送到/api/subscription路径。仅POST。谢谢