web-dev-qa-db-ja.com

javaの「XML外部エンティティ(XXE)処理を無効にする」脆弱性を修正する方法

Javaコードをsonarqubeに対して実行し、「XML外部エンティティ(XXE)処理を無効にする」という脆弱性を取得しました。Googleで時間をかけて問題を解決しました。多くのアプローチを試みています何もうまくいきません何が足りないのか分かりません

私のコード:

        final DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
        docFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
        docFactory.setFeature(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, false);
        docFactory.setFeature(XMLInputFactory.SUPPORT_DTD, false);

        docFactory.setFeature("http://Apache.org/xml/features/disallow-doctype-decl", true);
        docFactory.setFeature("http://xml.org/sax/features/external-general-entities", false);
        docFactory.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
        docFactory.setFeature("http://Apache.org/xml/features/nonvalidating/load-external-dtd", false);

        final DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
        final Document doc = docBuilder.parse(filepath);

私はJava 1.8を使用しています、どんな助けでもありがたいです。ありがとう

4
cheetoo

私にとっては、DocumentBuilderFactory.newInstance()DocumentBuilderFactory.newDefaultInstance()に変更するだけで、この警告を取り除くことができました。

0
Line

この2つのプロパティを設定するだけで十分です。

factory.setFeature("http://Apache.org/xml/features/disallow-doctype-decl", true);
factory.setFeature("http://xml.org/sax/features/external-general-entities", false);
0
Michał S