CodeShot

Broken Access Control در مقابل Security Misconfiguration

Broken Access Control (رتبه اول OWASP Top 10 2021) به معنی نبود یا نقص در منطق برنامه برای کنترل دسترسی کاربران به منابعی است که نباید ببینند، در حالی که Security Misconfiguration به تنظیمات نادرست زیرساخت یا فریمورک (مثل باز ماندن پنل مدیریتی، هدرهای امنیتی غایب یا پیام خطای افشاگر) اشاره دارد که ربطی به منطق کد ندارد.

ویژگیBroken Access ControlSecurity Misconfiguration
منشأ مشکلمنطق کد برنامهتنظیمات زیرساخت/فریمورک
نمونهدسترسی به داده کاربر دیگرDebug Mode فعال در Production
راه‌حلاصلاح Authorization در کدسخت‌گیری تنظیمات محیط

کِی از Broken Access Control استفاده کنیم؟

وقتی باگ در سطح منطق برنامه است، مثلاً یک Endpoint که باید فقط ادمین به آن دسترسی داشته باشد، بدون چک کردن نقش کاربر پاسخ می‌دهد.

کِی از Security Misconfiguration استفاده کنیم؟

وقتی مشکل در نحوه پیکربندی سرور، فریمورک یا سرویس‌های جانبی است، مثل فعال ماندن حالت Debug در Production یا باز بودن پورت غیرضروری.

مثال Broken Access Control

// Broken Access Control: بدون چک نقش
[HttpDelete("users/{id}")]
public IActionResult DeleteUser(int id)
    => Ok(_repo.Delete(id)); // فاقد [Authorize(Roles="Admin")]

مثال Security Misconfiguration

# Security Misconfiguration: پیام خطای کامل
# استک‌تریس در Production نمایش داده می‌شود
# و پنل /admin بدون احراز هویت در دسترس است

اشتباه رایج

اشتباه رایج یکی‌دانستن این دو دسته است؛ راه‌حل Broken Access Control اصلاح منطق کد و افزودن چک‌های Authorize است، در حالی که راه‌حل Security Misconfiguration بازبینی تنظیمات محیط، هدرها و پیکربندی deployment است، نه تغییر کد برنامه.

جمع‌بندی

برای رفع Broken Access Control باید منطق کنترل دسترسی در کد را اصلاح کرد؛ برای رفع Security Misconfiguration باید تنظیمات محیط و زیرساخت را سخت‌گیرانه‌تر و به‌روز نگه داشت.