「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > eval()vs。ast.literal_eval():ユーザー入力の方が安全なPython関数はどれですか?

eval()vs。ast.literal_eval():ユーザー入力の方が安全なPython関数はどれですか?

2025-03-26に投稿されました
ブラウズ:439

Eval() vs. ast.literal_eval(): Which Python Function Is Safer for User Input?

の重量eval()およびast.literal_eval()in python security

をユーザー入力を処理する場合、セキュリティに優先順位を付けることが不可欠です。強力なPython関数であるeval()は、潜在的な解決策として発生することがよくありますが、懸念は潜在的なリスクを取り囲んでいます。この記事では、eval()とast.literal_eval()の違いを掘り下げ、セキュリティの意味合いを強調しています。これは、悪意のある入力を緩和する前に実行できることを意味します。次のコードスニペットは、この脆弱性を示しています:

dataMap = eval( 'input('ここにいくつかのデータを提供: '))

ast.literal_eval()紹介 安全。入力を検証して、辞書、リスト、タプルなどのPythonリテラルを表すことを確認します。入力がこの形式に適合しない場合、それは例外を提起し、悪意のあるコードが実行されないようにします。

を試してください: datamap = ast.literal_eval(input( 'ここにデータを提供する:')) ValueRerrを除く: return#Invalid Input
datamap = eval(input('Provide some data here: '))
Best Practices

はセキュリティ上の理由で、可能な場合は、特に信頼できないまたは不確実な入力を扱う場合は、可能な場合はAST.Literal_Eval()を使用することを強くお勧めします。 Eval()は、搾取の可能性があるため避ける必要があります。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3