🔆 تا حالا به این فکر کردی که بشه کد پایتون رو از داخل یه رشته اجرا کرد؟
با exec() ممکنه!
code = "print('moz')"
exec(code) # خروجی: moz
دستور exec() میتونه هر رشتهای که شامل کد پایتونه رو در لحظه اجرا کنه.
⚠️ نکته مهم امنیتی
😱همین یک خط کد میتونه کل سیستم رو پاک کنه. نگید نگفتم!!
exec("import os; os.system('rm -rf /')")
تجزیه و تحلیل کد
- خط دستوری import os: این خط ماژول os را وارد میکند که امکان تعامل با سیستم عامل را فراهم میکند.
- دستور os.system('rm -rf /'): این فرمان سعی میکد تمام فایلها و پوشهها را از دایرکتوری روت (/) در سیستمهای عامل شبه یونیکس حذف کند( پارامتر -r به معنای حذف بازگشتی و f به معنای حذف بدون درخواست تأیید است).
- تابع exec() برای اجرای کد پایتون موجود در رشته استفاده میشود.
🔒 پس هیچوقت از exec برای اجرای ورودیهای غیرقابل اعتماد استفاده نکن.( نکن این کار بده! )
#security | #os | #exec | @learnpythonicy