[英]JAVA Owasp Zap SOAP XML Injection
我在我的服务器应用程序上运行了 Zap,但我一直遇到这个问题
<s12:Body>
<sch:somethingRequest xmlns:sch="http://www.axa.be/cos/synchro">
<sch:value>paramValue</sch:value>
<sch:value>paramValue_modified</sch:value>
</sch:somethingRequest >
</s12:Body>
它一直告诉我它很容易受到 XML 注入的影响,因为代码是由服务器解释的......
基本上,第二个“值”标签替换了前一个标签内的数据......
这是我的 xsd 样品
<xs:element name="somethingRequest">
<xs:complexType>
<xs:sequence>
<xs:element name="value" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
我试过这样的东西,但仍然有同样的问题......
@Bean
public SAXParserFactory saxParserFactory() throws SAXNotRecognizedException, SAXNotSupportedException, ParserConfigurationException {
final SAXParserFactory spf = SAXParserFactory.newInstance();
spf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
spf.setFeature("http://xml.org/sax/features/external-general-entities", false);
spf.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
spf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
return spf;
}
@Bean
public SAXParser saxParser(final SAXParserFactory factory) throws ParserConfigurationException, SAXException {
final SAXParser parser = factory.newSAXParser();
parser.setProperty(XMLConstants.ACCESS_EXTERNAL_DTD, "");
parser.setProperty(XMLConstants.ACCESS_EXTERNAL_SCHEMA, "");
return parser;
}
有任何想法吗? 谢谢。
在 WSDL 文件中使用 SOAP 属性的详细描述。
正如警报“解决方案”所暗示的,如果您的 SOAP 请求已针对强模型/模式进行检查,那么您应该拒绝包含重复元素的请求。
您也可以参考与警报相关的“参考”:
模式验证示例:
例如,当预计只有一个最大长度为 20 个字符的元素时,SOAP 主体的 XML 架构应仅包含以下内容:
<xs:element name="surname">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="0"/>
<xs:maxLength value="20"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.