tg-me.com/djangolearn_ir/1022
Last Update:
وقتی صحبت از امنیت میشه خیلی از توسعه دهندههای اینکار رو وظیفه تیم امنیت میدونند؛ که خب درست هم هست ولی تا یک جایی. شما هم بعنوان توسعه دهنده باید یک سری موارد رو بدونید.
مثلا خیلی دیدم؛ تیمهای تست نفوذ فراموش میکنند (دسترسی ندارند) الگوریتم hash
کردن پسورد داخل دیتابیس رو چک کنند؛ اینجا دانش شما بعنوان برنامهنویس پروژه خودش رو نشون میده و یک لایه اطمینان بیشتر برای پروژه خواهد بود.
دمشون گرم؛ تیم توسعه Django
رو میگم چرا که اکثر اتکهای مهم رو تا جایی که امکانش هست جلوگیری میکنند و برای همین هم همیشه میگم بکند رو فارغ از فریمورک یاد بگیرید. با این حال بسیاری دولوپر Django
هست که حتی زحمت بررسی و آپدیت به آخرین پچهای امنیتی رو به خودش نمیده مثلا pip freeze
و version locking
استفاده کرده.
توی بعضی مواقع هم دانستن بعضی نکات امنیتی برای optimization
بهتون کمک میکنه؛ مثلا توی password hash
ممکن هست تحت یک شرایط خاصی اصلا الگوریتمی مثل Argon2
به کار شما نیاد و به دلایلی بهش نیاز نداشته باشید تحت این شرایط میتونید برگردید روی sha256
و از اون استفاده کنید (این یک مثال بود اگر argon2
رو نمیشناسید درموردش بخونید؛ توی لیست PASSWORD_HASHERS
های Django
هم هست ولی خود Django
از PBKDF2
استفاده میکنه پیشفرض)
خیلی از برنامهنویسها سرویس login امنی دارند که از موارد امنیتی خوبی هم استفاده میکنه throttling, brute-force blocker, hashing
و ... اما بعضی موارد باید فراتر ازین بره؛ چیزی که خیلی ندیدم حتی روی بعضی سرویسهای لاگین شرکتهای بزرگ و موارد حساس.
فرض کنید شما login
با ایمیل اعضای شرکت بزنید (ایمیلهای شرکتی اصول خاصی داره و راحت بدست میاد) اگر ایمیل اشتباه باشه response time
شاید زیر 20ms
باشه ولی وقتی ایمیل درست هست بالای 100ms
میشه این یکی از تکنیکهای قدیمی مورد استفاده برای نفوذ به صفحات ادمین بوده و هست. شما وقتی username. email
رو پیدا کنی یک نگرانی کمتر خواهی داشت.
برای همین کسی که با این موارد آشنا هست؛ برای اینکه response time
لاگین درست و غلط رو یکسان کنه وقتی میبینه یوزر وجود نداره بجای اینکه درجا پاسخ رو برای کاربر بفرسته یکبار پسورد رو با یک چیز رندم (طبق validation
نمیتونه توی دیتابیس باشه) حساب میکنه و بعد response
اطلاعات غلط روی لاگین رو بر میگردونه.
البته که من برای این مثال دست روی یک موردی گذاشتم که خیلیها رعایت نمیکنند (شاید نیازی هم ندارند) و خیلیها بلد نیستند (باید دنبال یک جیزی هم میگشتم که خود django
امن نکرده باشه)
یا مثلا توی کار با دیتا قبول نکردن دیتای pickle؛ اینو برگردید بالا من همون اوایل شروع کار کانال گفتم با مثال و حدود ۶ ماه قبل یکی از خوبای دنیای تکنولوژی با همین روش بهش نفوذ شد (hugging face
رو منظورم هست)
یا توی شرکتهایی که یوزر فایل آپلود میکنه و نیروی انسانی باید فایل رو بررسی کنه؛ خیلی وقتا دیدم فقط پسوند فایل بررسی میشه و ...
حالا چه چیزهایی رو باید بعنوان دولوپر بدونید ؟ OWASP TOP 10 حداقلی ترین مواردی هست که شما بعنوان یک دولوپر باید بشناسید و راهای مقابله باهاش رو هم بلد باشید.
ولی بطور خاص برای Django Rest Framework
حداقل این cheathseet
رو باید داشته باشد
OWASP cheatsheet for DRF
من یک cheatsheet
شخصی خودم دارم (شامل مواردی از بخشهای مختلف همین cheatsheet
هم هست) ولی متاسفانه نمیتونم به اشتراک بذارم چون آخرین ورژن رو با داکیومنت شرکت ادغام کردم. اما پیشنهاد میدم لینک بالا رو بخونید و حتما حتما حتما نگاهی هم به رفرنسهاشون بندازید این خیلی مهمه.
BY جنگولرن
Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283
Share with your friend now:
tg-me.com/djangolearn_ir/1022