مهارت‌ها2 دقیقه مطالعه

OWASP Top 10 چیست؟ ۱۰ آسیب‌پذیری بحرانی وب

اگر بخواهی امنیتِ وب را جدی یاد بگیری، یک نقطه‌ی شروعِ استاندارد در کلِ دنیا وجود دارد: OWASP Top 10. این فهرست، نقشه‌ی راهِ مشترکِ هکرها و برنامه‌نویس‌هاست برای شناختنِ خطرناک‌ترین ضعف‌های وب.

نوشته‌ی مدرس امنیت سایبری و هک اخلاقی

کارشناسی امنیت سایبری از دانشگاه Manchester Metropolitan (درجه‌ی ممتاز) — تست نفوذ، امنیت شبکه، OSINT و گجت‌های سخت‌افزاری.

این مطلب چطور نوشته و بازبینی می‌شود؟

این مقاله بخشی از راهنمای کامل امنیت شبکه چیست؟ آموزش کامل امنیت شبکه از صفر تا حرفه‌ای است

OWASP Top 10 چیست؟ ۱۰ آسیب‌پذیری بحرانی وب

OWASP و این فهرست چیست؟

‏OWASP مخففِ Open Worldwide Application Security Project است؛ یک بنیادِ غیرانتفاعی که روی امنیتِ نرم‌افزار کار می‌کند. مشهورترین خروجیِ آن، فهرستِ OWASP Top 10 است: ده دسته از بحرانی‌ترین آسیب‌پذیری‌های وب که هر چند سال یک‌بار بر اساسِ داده‌های واقعی به‌روز می‌شود. این فهرست هم برای هکرِ اخلاقی نقشه‌ی شکار است و هم برای برنامه‌نویس چک‌لیستِ دفاع.

ده آسیب‌پذیری بحرانی

  • کنترلِ دسترسیِ شکسته (Broken Access Control): کاربر به داده یا عملیاتی دسترسی پیدا می‌کند که نباید.
  • شکستِ رمزنگاری (Cryptographic Failures): داده‌های حساس بدونِ رمزنگاریِ درست ذخیره یا منتقل می‌شوند.
  • تزریق (Injection): ورودیِ مخرب به دیتابیس یا سیستم تزریق می‌شود — مثلِ تزریق SQL.
  • طراحیِ ناامن (Insecure Design): ضعفِ امنیتی از خودِ معماریِ برنامه ریشه می‌گیرد.
  • پیکربندیِ اشتباهِ امنیتی (Security Misconfiguration): تنظیماتِ پیش‌فرض یا نادرست که در را باز می‌گذارند.
  • اجزای آسیب‌پذیر و قدیمی (Vulnerable & Outdated Components): استفاده از کتابخانه‌ها و نرم‌افزارهای به‌روزنشده.
  • شکستِ شناسایی و احراز هویت (Authentication Failures): ضعف در ورود و مدیریتِ نشست.
  • شکستِ یکپارچگیِ داده و نرم‌افزار (Integrity Failures): اعتماد به منابع یا به‌روزرسانی‌های تأییدنشده.
  • کمبودِ ثبت و پایشِ امنیتی (Logging & Monitoring Failures): وقتی حمله رخ می‌دهد اما کسی متوجه نمی‌شود.
  • جعلِ درخواستِ سمتِ سرور (SSRF): وادار کردنِ سرور به فرستادنِ درخواست به مقصدی که مهاجم می‌خواهد.

چرا این فهرست این‌قدر مهم است؟

چون بیشترِ نفوذهای واقعیِ وب دقیقاً از همین ده دسته می‌آیند. اگر یک برنامه‌نویس همین ده مورد را درست رعایت کند، جلوی اکثریتِ حمله‌ها را گرفته است؛ و اگر یک هکرِ اخلاقی همین ده مورد را عمیق بلد باشد، بیشترِ اهداف را می‌تواند ارزیابی کند. باگ‌بانتی‌ها هم اغلب پاداشِ خود را از همین دسته‌ها می‌گیرند.

نمونه: تزریق و راه دفاع

تزریق کلاسیک‌ترین موردِ این فهرست است. ریشه‌اش این است که ورودیِ کاربر مستقیم و بدونِ پاک‌سازی درونِ یک دستور قرار بگیرد. راهِ دفاع، استفاده از «کوئریِ پارامتری» است که داده را از دستور جدا نگه می‌دارد:

# ناامن — ورودی مستقیم داخل کوئری (آسیب‌پذیر به تزریق SQL)
query = "SELECT * FROM users WHERE name = '" + user_input + "'"

# امن — کوئری پارامتری؛ داده هرگز به‌عنوان دستور اجرا نمی‌شود
cursor.execute("SELECT * FROM users WHERE name = ?", (user_input,))

به‌جای چسباندن ورودی به کوئری، از پارامتر استفاده کن

برای هر دو طرف

‏OWASP Top 10 را هم به‌عنوان مهاجم و هم به‌عنوان مدافع بخوان. اگر بفهمی هر ضعف چطور بهره‌برداری می‌شود، هم بهتر آن را پیدا می‌کنی و هم بهتر جلویش را می‌گیری. این نگاهِ دوگانه، مهارتِ اصلیِ یک متخصصِ امنیتِ وب است.

سؤال‌های پرتکرار

OWASP Top 10 برای برنامه‌نویس‌هاست یا هکرها؟

برای هر دو. برنامه‌نویس از آن به‌عنوان چک‌لیستِ دفاع استفاده می‌کند و هکرِ اخلاقی از آن به‌عنوان نقشه‌ی ارزیابی؛ هر دو باید این فهرست را بلد باشند.

برای یادگیری OWASP Top 10 باید برنامه‌نویسی بلد باشم؟

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

این فهرست هر چند وقت به‌روز می‌شود؟

‏OWASP هر چند سال یک‌بار فهرست را بر اساسِ داده‌های واقعیِ صنعت بازبینی و منتشر می‌کند تا با تهدیدهای روز هماهنگ بماند.

آماده‌ای عملی یاد بگیری؟ دوره‌ها و کارگاه‌های هک و امنیت سایبری را ببین و مسیرت را جدی شروع کن.

دیدن دوره‌ها