如何在java中验证XSS attcaks的soap Web服务请求参数

如何在java中验证XSS attcaks的soap Web服务请求参数,java,security,soap,xss,soap-client,Java,Security,Soap,Xss,Soap Client,如何从客户端站点脚本attcaks或XSS attcaks保护我的api 我们有一个soap端点,它被许多客户机访问,传入的请求数据需要验证其正确性和安全性 传入的请求可能具有DOM对象模型或任何破坏应用程序的可疑数据 如下图所示 <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cus=

如何从客户端站点脚本attcaks或XSS attcaks保护我的api

我们有一个soap端点,它被许多客户机访问,传入的请求数据需要验证其正确性和安全性

传入的请求可能具有DOM对象模型或任何破坏应用程序的可疑数据

如下图所示

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cus="http://www.abcxyz.com/aaa/bbb" xmlns:ws="http://www.abcxyz.com/aaa/bbb">
   <soapenv:Header>
      **<cus:id>
         <SCRIPT>a=/XSS/alert(a.source)</SCRIPT>
      </cus:id>**
   </soapenv:Header>
   <soapenv:Body>
      <cus:cancelRequest>
         <!--Optional:-->
         <ws:transactionId>10000</ws:transactionId>
         <ws:systemId>CCC</ws:systemId>
         <ws:userId>USER_NAME</ws:userId>
         <cus:cancelElements>
            <cus:elementType>NAME</cus:elementType>
            <cus:elementId>AB123</cus:elementId>
         </cus:cancelElements>
      </cus:cancelRequest>
   </soapenv:Body>
</soapenv:Envelope>

**
a=/XSS/alert(a.source)
**
10000
CCC
用户名
名称
AB123

如果黑客通过将恶意数据作为请求参数的一部分进行攻击,那么我需要处理它,并通过一个错误或不允许处理数据。

解决方案是,您必须编写XSD(模式定义)这个XSD应该能够针对上述xml文件中的元素进行验证

答:您必须导入一个包importjavax.xml.*。这样,您将能够根据xsd验证xml文件

例如:Employee.xsd EployeeRequest.xml

Employee.xsd

<simpleType name="Imei">
<annotation>
<documentation>A string representing the IMEI number. An IMEI will be of 15 digit.</documentation>
</annotation>
<restriction base="string">
<pattern value="\d{15}"/>
</restriction>

请单击以供参考。

您不能使用Java中的编码方法来解决此问题。我确信Java有一种编码方法或类似的方法。

嗨,你能标记一下答案吗?它是否对你有用。请感谢ppl花时间回答您的问题。如果我只有一个xsd文件,并且为xml文件定义了不同的complextType元素,我该怎么做?基本上,如果有10个或更多xml文件,所有可选数据都在单个xsd文件中处理。那么像上面这样验证是不可行的吗?请让我知道,如果有任何其他方法可以做到这一点,纠正我的错误我相信你需要为每个xml文件编写不同的xsd文件。我想这是标准。
validateXMLSchema("Employee.xsd", "EmployeeRequest.xml"));