web-dev-qa-db-ja.com

XML外部エンティティインジェクションのFortify修正

Fortifyツールを使用してスキャンすると、「XML外部エンティティインジェクション」でいくつかの問題が発生しました。

TransformerFactory trfactory = TransformerFactory.newInstance(); 

これは、エラーが表示されている場所です。私はfortifyによって提案されたように以下の修正を与えました

trfactory.setFeature("http://xml.org/sax/features/external-general-entities", false); 
trfactory.setFeature("http://xml.org/sax/features/external-parameter-entities", false); 

しかし、それでも問題は修正されていません。この問題を修正する方法は?

6
veera
TransformerFactory trfactory = TransformerFactory.newInstance();
trfactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
trfactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
trfactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");

これで十分です。

2
Kondal Kolipaka

Javaバージョンに互換性がない場合は機能しないことがあります。

if (javaVersion > 1.6) {
        dbf.setFeature("http://xml.org/sax/features/external-general-entities", false);
        dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
      }
else {
        if (javaVersion > 1.5) {
          dbf.setFeature("http://xerces.Apache.org/xerces2-j/features.html#external-general-entities", false);
          dbf.setFeature("http://xerces.Apache.org/xerces2-j/features.html#external-parameter-entities", false);
        }
else {
          dbf.setFeature("http://xerces.Apache.org/xerces-j/features.html#external-general-entities", false);
          dbf.setFeature("http://xerces.Apache.org/xerces-j/features.html#external-parameter-entities", false);
        }
 }

それは私のために働いた:-)

1

この行を追加します。それは私のために働いた。

factory.setFeature("http://Apache.org/xml/features/disallow-doctype-decl", true);
0
Abhishek Das

次のことも試すことができます。

    TransformerFactoryImpl transformerFactoryImpl = new TransformerFactoryImpl();
    Transformer transformer = transformerFactoryImpl.newTransformer();
    transformer.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
0
Ben Wong

TransformerFactory.newInstance()の代わりに「Xalan」実装クラスを試してみました。それは私のために機能し、強化の問題が修正されました

        TransformerFactoryImpl transformerFactoryImpl = new TransformerFactoryImpl();
        Transformer transformer = transformerFactoryImpl.newTransformer();
0
veera