KavLabs
خانهبلاگ
KavLabs

یادداشت‌هایی از ذهن‌های کاوشگر، برای ذهن‌های کنجکاو

پرهام·پرهام·زال·زال·
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
نوشته‌هادسته‌بندی‌هاجستجوی پیشرفتهلاگ تغییرات

©۲٬۰۲۶ KavLabs — تمام حقوق محفوظ است

ساخته‌شده با عشق توسط پرهام و زال

واژه‌نامه
۰۴ اسفند ۱۴۰۴OWASP Top 10متوسطزبان: فارسی

طراحی ناامن(N/A)

متوسطنسخه انگلیسی

آسیب‌پذیری‌هایی که به دلیل نقص در طراحی معماری و منطق برنامه ایجاد می‌شوند، نه باگ‌های کدنویسی.

اوسپطراحیمعماریمنطق

طراحی ناامن چیه؟

خلاصه در یه جمله: وقتی از اول طرح سیستم غلط باشه، هر چقدر هم کد تمیز بنویسی، بازم ناامنه!

فرض کن می‌خوای یه خونه بسازی. اگه از اول نقشه رو غلط بکشی (مثلاً در ورودی رو رو به دره بزنی!)، هر چقدر هم در رو محکم کنی، فایده نداره! طراحی ناامن همینه — مشکل از کد نیست، مشکل از نقشه‌ست .

تفاوت باگ کد و طراحی ناامن:

باگ کد: کد اشتباه نوشته شده. مثلاً فراموش کردی چک کنی کاربر لاگین کرده یا نه. این رو می‌شه با Patch درست کرد.

طراحی ناامن: از اول طرح غلطه. مثلاً سیستم طوری طراحی شده که کاربر می‌تونه بدون لاگین به داده‌ها دسترسی داشته باشه. این رو نمی‌شه با Patch درست کرد، باید کل طراحی رو عوض کرد!

مثال‌های طراحی ناامن:

۱. بازیابی پسورد ضعیف: سوال امنیتی می‌ذاری "نام حیوان خانگی تو چیه؟" این رو هر کسی می‌تونه از شبکه‌های اجتماعی پیدا کنه!

۲. Rate Limiting نداره: کاربر می‌تونه بی‌نهایت بار پسورد رو تست کنه. Brute Force راحت انجام می‌شه!

۳. Session Management غلط: Session ID تو URL هست. هر کسی URL رو ببینه، می‌تونه اکانت تو رو برداره!

۴. Trust Boundary اشتباه: به داده‌های کلاینت اعتماد می‌کنی. مثلاً قیمت رو از کلاینت می‌گیری، کاربر می‌تونه تغییرش بده!

چرا برای امنیت مهمه؟

چون شماره ۴ OWASP Top 10 2021 هست! طراحی ناامن رو نمی‌شه با کد درست کرد. باید از اول با امنیت طراحی بشه (Security by Design). برای همین Threat Modeling مهمه — قبل از کد زدن، فکر کنی هکر چطور حمله می‌کنه.


منابع و مراجع

  • owasp.org/Top10/A04_2021-Insecure_Design
  • cwe.mitre.org/data/definitions/1114.html