1

Xstream API を使用して Xml EXternal Entity (XXE) の脆弱性を修正する方法を知りたいです。

私たちができるように

// This is the PRIMARY defense. If DTDs (doctypes) are disallowed, almost all XML entity attacks are prevented
// Xerces 2 only - http://xerces.apache.org/xerces2-j/features.html#disallow-doctype-decl
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
String FEATURE = null;
FEATURE = "http://apache.org/xml/features/disallow-doctype-decl";
dbf.setFeature(FEATURE, true);

DocumentBuilderFactory で。詳細 - https://www.owasp.org/index.php/XML_External_Entity_%28XXE%29_Prevention_Cheat_Sheet

私のコードは次のようなものです-

public static Class<?>[] myAnnotatedClasses = { Test1.class, Test2.class };

public static Object parseStr(String str) throws XStreamException
{
    XStream xstream = new XStream(new StaxDriver());
    xstream.processAnnotations(myAnnotatedClasses);
    Object obj =xstream.fromXML(str);
    return obj;
}
4

1 に答える 1

1

XStream FAQによると:

StaxDriver標準 StaX パーサーの外部エンティティーのサポートをオフにしようとします。ただし、最終的に使用される StAX 実装は外部で定義され (JDK ドキュメントを参照)、ターゲット プラットフォームでテストを行って、パーサーが設定を尊重することを確認する必要があります。

これが言っていることは、正しいことを行うStaxDriverように実装に指示しようとすることですが、使用している実装はこれを無視する可能性があります。無視する場合、簡単な答えは、FAQ にリストされている問題のない代替ドライバーの 1 つを使用することです。StAXStAX

于 2016-10-12T15:01:15.520 に答える