在java中的soap信封之前添加实体扩展

时间:2016-02-03 12:41:56

标签: java xml web-services soap wsdl

我想为下面的例子编写java程序代码。我无法在肥皂信封之前找到添加Doctype的方法。

<?xml version="1.0"?>
<!DOCTYPE order SYSTEM "c:\order.dtd">
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body xmlns:m="http://www.example.org/order">

<order>
<cust_id>1</cust_id>
<cust_name>Bob Smith</cust_name>
<creditcardnum>999999999999</creditcardnum>
<creditcardexpiry>0609</creditcardexpiry>
<item>
<prod_id>1</prod_id>
<quantity>2</quantity>
</item>
</order>
</soap:Body>
</soap:Envelope>

1 个答案:

答案 0 :(得分:0)

简而言之,您不应该在SOAP消息中添加DOCTYPE,即使您以某种方式使其工作。

稍微长一点的答案是,根据SOAP的规范,SOAP消息绝不能包含DTD。最有可能出现这种情况的原因,但有一些明确的担忧允许DTD,因为它打开了诸如XXE(XML外部实体攻击)等恶意攻击的大门。

以下是一些其他资源:

http://www.w3schools.com/xml/xml_soap.asp https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Processing