Billion Laughs DoS 攻撃は、XML ファイル内のエンティティの展開を停止するだけで防止できるようです。Python の xlrd ライブラリ (つまり、何らかのフラグ) でこれを行う方法はありますか? そうでない場合、攻撃を回避するための推奨される方法はありますか?
質問する
2120 次
1 に答える
1
xlrd だけではありません
現時点では、あらゆる種類の XML 爆弾を防ぐためのオプションは xlrd にありません。ソース コードでは、xlsx データはxml.etree
検証なしで解析するために Python のビルトインに渡されます。
import xml.etree.ElementTree as ET
def process_stream(self, stream, heading=None):
if self.verbosity >= 2 and heading is not None:
fprintf(self.logfile, "\n=== %s ===\n", heading)
self.tree = ET.parse(stream)
ElementTree
ただし、 defusedxml を使用してパッチを適用できる場合があります。
コメントで指摘されているように、defusedxmlは、さまざまな種類の XML 爆弾に対するセキュリティの問題を直接対象としたパッケージです。ドキュメントから:
それ以外の:
from xml.etree.ElementTree import parse et = parse(xmlfile)
コードを次のように変更します。
from defusedxml.ElementTree import parse et = parse(xmlfile)
また、標準ライブラリにパッチを適用する機能も提供します。これは xlrd が使用しているものであるため、xlrd と defusedxml の組み合わせを使用して、XML 爆弾から身を守りながら Excel ファイルを読み取ることができます。
さらに、このパッケージには、defusedxml.defuse_stdlib() を使用してすべての stdlib モジュールにモンキー パッチを適用する未テストの機能があります。
于 2016-04-26T21:18:46.673 に答える