دسته بندی
Access Control and Data Exposure
باگ Insecure Direct Object References (IDOR) یک نوع باگ امنیتی است که زمانی رخ میدهد که یک برنامهی وب (یا نرمافزار دیگر) به شئ ها یا منابع مستقیما با استفاده از مقادیر قابل تغییر توسط کاربر ارجاع داده میشود. این ارجاعها میتوانند به دادهها یا منابع حساس در سیستم دسترسی پیدا کنند که قرار است توسط کاربران دیگر قابل دسترسی نباشند.مثال:
فرض کنید یک وبسایت فروشگاهی به کاربران اجازه میدهد که به فاکتورهای خرید خود دسترسی پیدا کنند و آنها را مشاهده کنند. فاکتورها با استفاده از یک شناسه یکتا (مثل شماره فاکتور) شناسایی میشوند و کاربران با ارسال این شناسهها میتوانند فاکتورهای خود را مشاهده کنند.
$invoice_id = $_GET['invoice_id'];
حملهکننده میتواند با تغییر شناسه فاکتور در
URL، به فاکتورهای دیگر که مربوط به او نیستند، دسترسی پیدا کند:https://example.com/view_invoice.php?invoice_id=123456و با تغییر شناسه به شکل زیر:
https://example.com/view_invoice.php?invoice_id=987654به فاکتورهای دیگری دسترسی پیدا کند که ممکن است مربوط به کاربران دیگری باشند و اطلاعات حساس را نمایش دهد.
روش های جلوگیری:
1- اطمینان حاصل کنید که نشانهها یا شناسهها برای دسترسی به منابع موثق هستند و به صورت تصادفی و قابل حدس نیستند.
2- قبل از ارجاع به یک منبع یا شئ، اعتبارسنجی دسترسی کاربر به منبع را انجام دهید و مطمئن شوید که کاربر مجاز به دسترسی به آن منبع است.
3- از مقادیری برای شناسایی منابع استفاده کنید که غیرقابل پیشبینی باشند و نتوان از تغییر یا حدس آنها به منابع حساس دسترسی پیدا کرد.
4- تعیین سطح دسترسی به منابع مختلف بر اساس نقشها و مجوزها و محدود کردن دسترسیها به منابع بر اساس آنها.
5- با استفاده از مکانیزمهای توسعهیافته تحت عنوان
RBAC (Role-Based Access Control) یا ABAC (Attribute-Based Access Control)
میتوانید سطح دسترسیها را بهبود دهید..