wangxiaoming 6 vuotta sitten
vanhempi
commit
1315c894b3

+ 7 - 0
tooth-common-tool/src/main/java/com/iamberry/wechat/tools/GetWxOrderno.java

@@ -80,7 +80,14 @@ public class GetWxOrderno {
 
 		Map<String, String> m = new HashMap<String, String>();
 		InputStream in = string2Inputstream(strxml);
+
 		SAXBuilder builder = new SAXBuilder();
+		// 防止XXE
+		builder.setFeature("(http://apache.org/xml/features/disallow-doctype-decl",  true);
+		builder.setFeature("(http://xml.org/sax/features/external-general-entities", false);
+		builder.setFeature("(http://xml.org/sax/features/external-parameter-entities",  false);
+		builder.setFeature("(http://apache.org/xml/features/nonvalidating/load-external-dtd",  false);
+
 		Document doc = builder.build(in);
 		Element root = doc.getRootElement();
 		List<Element> list = root.getChildren();

+ 5 - 0
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/pay/ResponseWechatPayHandler.java

@@ -478,6 +478,11 @@ public class ResponseWechatPayHandler {
 			InputSource source = new InputSource(read);
 			// 创建一个新的SAXBuilder
 			SAXBuilder sb = new SAXBuilder();
+			// 防止XXE
+			sb.setFeature("(http://apache.org/xml/features/disallow-doctype-decl",  true);
+			sb.setFeature("(http://xml.org/sax/features/external-general-entities", false);
+			sb.setFeature("(http://xml.org/sax/features/external-parameter-entities",  false);
+			sb.setFeature("(http://apache.org/xml/features/nonvalidating/load-external-dtd",  false);
 			// 通过输入源构造一个Document
 			Document doc = (Document) sb.build(source);
 			Element root = doc.getRootElement();// 指向根节点