0

着信要求の XML ファイルを検証する必要があります。要件の 1 つは、DoS 攻撃の可能性があるため、文字参照を完全に防止することです。以下のように設定するSAXParserFactoryと:

SAXParserFactory spf = SAXParserFactory.newInstance();
spf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);

その後、parer は 100.000 エンティティ展開を解決します。

The parser has encountered more than "100.000" entity expansions in this document; this is the limit imposed by the application.

外部参照の防止は、EntityResolver正常に機能する を介して行われました。しかし、どうすれば文字参照を防ぐことができますか?

4

2 に答える 2

1

文字参照はサービス拒否攻撃を引き起こすことはできないため、それらを防ぐ理由はありません。

于 2013-08-28T20:04:17.070 に答える
0

のインスタンスはorg.apache.xerces.util.SecurityManager、エンティティ展開の量を制限できます。これが例です。

SAXParser saxParser = spf.newSAXParser();
org.apache.xerces.util.SecurityManager mgr = new org.apache.xerces.util.SecurityManager();
mgr.setEntityExpansionLimit(-1);
saxParser.setProperty("http://apache.org/xml/properties/security-manager", mgr);

これにより、XML ファイルに少なくとも 1 つのエンティティ参照が含まれている場合、解析プロセスは終了します。. はもう必要ありませんEntityResolver

を含む jar ファイルは、ここからSecurityManagerダウンロードできます。

于 2013-08-28T23:01:33.003 に答える