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