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を使用しています、どんな助けでもありがたいです。ありがとう
私にとっては、DocumentBuilderFactory.newInstance()
をDocumentBuilderFactory.newDefaultInstance()
に変更するだけで、この警告を取り除くことができました。
この2つのプロパティを設定するだけで十分です。
factory.setFeature("http://Apache.org/xml/features/disallow-doctype-decl", true);
factory.setFeature("http://xml.org/sax/features/external-general-entities", false);