2011-01-17 7 views
19

ast.literal_eval(node_or_string)の評価が実際には安全でないという既知の方法はありますか?Python 3、ast.literal_eval(node_or_string)に既知のセキュリティホールがありますか?

「はい」の場合は、パッチを入手できますか?

(私はすでに、おそらくより安全である、PyPy [サンドボックス]について知っているが、答えはイエスでない限り、その後、いや、私のニーズは、私はそこまで行くことはないだろうことを十分に軽微なものである。)

+0

いいえ、それを証明するために私はCBAします。 –

答えて

41

documentationはそれが安全であり、bug trackerにliteral_evalのセキュリティに関連するバグはないと考えているので、おそらく安全だと思われます。

また、according to the source、literal_evalは、文字列をPython AST(ソースツリー)に解析し、それがリテラルの場合にのみ返します。コードは決して実行されず、解析されるだけなので、セキュリティ上のリスクはありません。

+4

+1これ以上の答えがない理由は、それ以上何も言う必要がないということです。 –

+1

さて、リスクがないことを証明することは常に困難ですが、コードが実際に実行されないという事実は、リスクがあまりないことを確信させるのに役立ちます。 – madjar

+2

リスクはPython自体とほぼ同じです。 –

関連する問題