🔆 تا حالا به این فکر کردی که بشه کد پایتون رو از داخل یه رشته اجرا کرد؟
با
دستور exec() میتونه هر رشتهای که شامل کد پایتونه رو در لحظه اجرا کنه.
⚠️ نکته مهم امنیتی
😱همین یک خط کد میتونه کل سیستم رو پاک کنه. نگید نگفتم!!
تجزیه و تحلیل کد
- خط دستوری
- دستور
- تابع
🔒 پس هیچوقت از exec برای اجرای ورودیهای غیرقابل اعتماد استفاده نکن.( نکن این کار بده! )
#security | #os | #exec | learnpythonicy
با
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