XML 외부 개체(XML External Entity, XXE) 취약점
Improper Restriction of XML External Entity Reference ('XXE')
Last updated
Improper Restriction of XML External Entity Reference ('XXE')
Last updated
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory;
import java.io.StringReader;
public class UnsafeXXE {
public static void main(String[] args) throws Exception {
XMLReader reader = XMLReaderFactory.createXMLReader(); // 보안 설정 없이 XMLReader 사용
reader.parse(new InputSource(new StringReader("<!DOCTYPE foo [ <!ENTITY xxe SYSTEM \"file:///etc/passwd\"> ]><foo>&xxe;</foo>")));
}
}import javax.xml.XMLConstants;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.InputSource;
import org.xml.sax.helpers.DefaultHandler;
import java.io.StringReader;
public class SafeXXE {
public static void main(String[] args) throws Exception {
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
SAXParser parser = factory.newSAXParser();
parser.parse(new InputSource(new StringReader("<foo>bar</foo>")), new DefaultHandler());
}
}