"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > eval () مقابل AST.LITERAL_EVAL (): أي وظيفة Python أكثر أمانًا لإدخال المستخدم؟

eval () مقابل AST.LITERAL_EVAL (): أي وظيفة Python أكثر أمانًا لإدخال المستخدم؟

نشر في 2025-03-26
تصفح:517

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

وزن eval () و ast.literal_eval () في Python Security

غالبًا ما تنشأ eval () ، وهي وظيفة python قوية ، كحل محتمل ، ولكن المخاوف تحيط بمخاطرها المحتملة. تتحول هذه المقالة إلى الاختلافات بين eval () و ast.literal_eval () ، وتسليط الضوء على آثار الأمان. هذا يعني أنه يمكن تنفيذ المدخلات الضارة قبل أن تتاح لك فرصة التخفيف منها. يوضح مقتطف الكود التالي هذا الضعف:

datamap = eval ('إدخال ("قدم بعض البيانات هنا:'))

تقديم ast.literal_eval ()

يقوم بالتحقق من صحة المدخلات للتأكد من أنها تمثل بيثون حرفيًا ، مثل القاموس أو القائمة أو القمامة. إذا كان الإدخال لا يتناسب مع هذا التنسيق ، فإنه يثير استثناء ، ومنع رمز ضار من التشغيل.

حاول: datamap = ast.literal_eval (إدخال ("قدم بعض البيانات هنا: ')) باستثناء ValueRror: إرجاع # تعامل مع إدخال غير صالح
datamap = eval(input('Provide some data here: '))
يجب تجنب eval () بسبب إمكانية الاستغلال.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3