背景说明
应用工程使用XML解析器解析外部传入的XML文件,如果没有做特殊处理,大多会解析XML文件中的外部实体。 如果外部实体包含URI,那么XML解析器会访问URI指定的资源,例如本地或者远程系统上的文件。 该攻击可用于未经授权访问本地计算机上的文件,扫描远程系统,或者导致本地系统拒绝服务。
通过配置XML解析器,禁止加载外部实体。
SAXReader解析器
public static String DDD= “http://apache.org/xml/features/disallow-doctype-decl“;
SAXReader reader = new SAXReader();
reader.setFeature(DDD,true);
reader.setFeature(“http://xml.org/sax/features/external-general-entities“, false);
reader.setFeature(“http://xml.org/sax/features/external-parameter-entities“, false);
Document doc = reader.read(in);
SAXBuilder解析器
SAXBuilder sb