信頼できない文字列を使用した Python の eval() のセキュリティへの影響
eval() を使用して信頼できない Python 文字列を評価すると、いくつかのセキュリティ リスクが発生します。
1. eval(string, {"f": Foo()}, {})
これは安全ではありません。 Foo インスタンスを通じて、「os」や「sys」などの組み込みにアクセスでき、システムを侵害する可能性があります。
2. eval(string, {}, {})
これも安全ではありません。明示的に辞書を渡さなくても、「len」や「list」などの組み込みを使用して他の安全でない API にアクセスできます。
3.ビルトインの禁止
eval() コンテキストでのビルトインの存在を完全に阻止する簡単な方法はありません。 Python インタープリタへのパッチが必要です。
追加のリスク:
「[0] * 100000000」のような悪意のある文字列は、リソースの枯渇につながる可能性があります。任意の式を実行すると、ユーザー データとシステムのセキュリティが侵害される可能性があります。
代替アプローチ:
eval() を使用する代わりに、信頼できないデータを処理するための他の方法を検討してください。例:
以上が信頼できない文字列で Python の「eval()」を使用するのはどの程度安全ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。