社内のデスクトップアプリケーションでevalを使用するのは危険です。私は、Webアプリケーションの問題を理解しています。デスクトップのシッククライアントアプリケーションでは本当に問題ですか?シッククライアントのデスクトップアプリケーションでPythonの評価がより安全になる
我々は、我々は、ユーザーが社内DSLを使用してクエリを作成することができ、コメントが言ったように、動的にeval
社内のデスクトップアプリケーションでevalを使用するのは危険です。私は、Webアプリケーションの問題を理解しています。デスクトップのシッククライアントアプリケーションでは本当に問題ですか?シッククライアントのデスクトップアプリケーションでPythonの評価がより安全になる
我々は、我々は、ユーザーが社内DSLを使用してクエリを作成することができ、コメントが言ったように、動的にeval
を使用してPythonのコードにコンパイルし、それはあなたが「安全」で何を意味するかに依存してシナリオを持っています。セキュリティの観点からは、eval
がすべての希望の終わりです。一度それを持って、戻って行くことはありません、ユーザーは彼が望む何でもすることができます。例
eval('(lambda fc=(lambda n: [c for c in().__class__.__bases__[0].__subclasses__() if c.__name__ == n][0]): fc("function")(fc("code")(0,0,0,0,"KABOOM",(),(),(),"","",0,""),{})())()')
ため
Consider(見えない?何の手を!)。あなたのOSにcat-picturesを上書きしたり、NP対Pを解決したり、PCをブラックホールに変えたりすることもできます。要するに、一度にと入力すると、ユーザ入力はeval()
になります。危険です。ユーザーが入力した内容を正しくエスケープしようとするのをやめてください。
デスクトップアプリケーションです。これにより、潜在的な攻撃の範囲がプログラムを実行しているユーザーのコンピュータに制限されます。 'eval'を使ってローカルアプリケーションをハックしようとしたり、落とそうとするのは何でしょうか? 'eval'を使ってできることは何もありません。そうでなければあなた自身のコンピュータにすることはできません。 – Kevin
危険は相対的です。セキュリティの観点から、または安定性の観点から危険ですか?任意のコードを許可する場合は、ユーザビリティの観点から、少なくとも例外的にすべての例外を正常に処理する必要があります。 – Sam