آدرس : تهران میدان فردوسی خیابان ایرانشهر بین سمیه و طالقانی مجتمع تجاری میلاد واحد 9

پشتیبانی 24 ساعته : 02188867940 – 09927674217

برای مشاهده لیست علاقه مندی ها وارد شوید!

مشاهده محصولات فروشگاه
0

هیچ محصولی در سبد خرید نیست.

مشکلات رایج در استفاده از Asserts در پایتون

دسته بندی :اخبار سایت 8 فوریه 2023 علیرضا بابامرادی 357

قبل از حرکت، دو اخطار مهم در مورد وجود دارد
استفاده از اظهارات در پایتون که من می خواهم آنها را فراخوانی کنم.
اولین مورد مربوط به معرفی خطرات امنیتی و اشکالات است
برنامه های شما، و دومی در مورد یک دستور نحوی است که
نوشتن اظهارات بی فایده را آسان می کند.
به نظر می رسد (و به طور بالقوه) بسیار وحشتناک است، بنابراین احتمالاً باید
حداقل از این دو اخطار زیر چشم پوشی کنید.
اخطار شماره 1 – از Asserts برای اعتبارسنجی داده ها استفاده نکنید
بزرگترین اخطار در مورد استفاده از اظهارات در پایتون این است که ادعاها می توانند
با سوئیچ های خط فرمان -O و -OO به صورت جهانی غیرفعال شود
و همچنین متغیر محیطی PYTHONOPTIMIZE در CPython.
این هر عبارت ادعایی را به یک عملیات تهی تبدیل می کند: اظهارات
به سادگی جمع آوری می شود و ارزیابی نمی شود، به این معنی
هیچ یک از عبارات شرطی اجرا نخواهد شد.
این یک تصمیم طراحی عمدی است که به طور مشابه توسط بسیاری دیگر استفاده می شود
زبانهای برنامه نویسی. به عنوان یک عارضه جانبی، استفاده از عبارات ادعایی به عنوان یک راه سریع و آسان برای اعتبارسنجی بسیار خطرناک می شود.
داده های ورودی.
اجازه دهید توضیح بدهم—اگر برنامه شما از دعوی برای بررسی اینکه آیا یک تابع استفاده می کند
آرگومان حاوی یک مقدار “اشتباه” یا غیرمنتظره است، این می تواند نتیجه معکوس داشته باشد
به سرعت و منجر به باگ یا حفره های امنیتی می شود.
بیایید به یک مثال ساده نگاهی بیندازیم که این مشکل را نشان می دهد. دوباره، تصور کنید که در حال ساخت یک برنامه فروشگاه آنلاین با آن هستید
پایتون. جایی در کد برنامه شما تابعی برای وجود دارد
یک محصول را طبق درخواست کاربر حذف کنید.
از آنجا که شما به تازگی در مورد ادعاها یاد گرفته اید، مشتاق به استفاده از آنها هستید
در کد خود (هی، می دانم که خواهم بود!) و موارد زیر را بنویسید
پیاده سازی:
def delete_product(prod_id, user):
assert user.is_admin(), ‘Must be admin’
assert store.has_product(prod_id), ‘Unknown product’
store.get_product(prod_id).delete()
به این تابع delete_product دقت کنید. حالا، چه خبر است
در صورت غیرفعال شدن ادعاها اتفاق می افتد؟
دو مسئله جدی در این مثال تابع سه خطی وجود دارد و
آنها به دلیل استفاده نادرست از عبارات اظهارات ایجاد می شوند:

  1. بررسی امتیازات ادمین با بیانیه ادعا خطرناک است. اگر اظهارات در پایتون غیرفعال باشد
    مفسر، این به یک null-op تبدیل می شود. بنابراین هر کاربری می تواند
    اکنون محصولات را حذف کنید بررسی امتیازات حتی اجرا نمی شود.
    این احتمالاً یک مشکل امنیتی ایجاد می کند و در را باز می کند
    برای مهاجمان برای از بین بردن یا آسیب جدی به داده های موجود در ما
    فروشگاه آنلاین. خوب نیست.
علیرضا بابامرادی

راه آسان‌تری برای ارتباط با کاربران‌مان پیدا کرده‌ایم :) عضویت در کانال

مطالب زیر را حتما بخوانید:

قوانین ارسال دیدگاه در سایت

  • چنانچه دیدگاهی توهین آمیز باشد تایید نخواهد شد.
  • چنانچه دیدگاه شما جنبه ی تبلیغاتی داشته باشد تایید نخواهد شد.
  • چنانچه از لینک سایر وبسایت ها و یا وبسایت خود در دیدگاه استفاده کرده باشید تایید نخواهد شد.
  • چنانچه در دیدگاه خود از شماره تماس، ایمیل و آیدی تلگرام استفاده کرده باشید تایید نخواهد شد.
  • چنانچه دیدگاهی بی ارتباط با موضوع آموزش مطرح شود تایید نخواهد شد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

لینک کوتاه:
0