آسیب پذیری Insecure Direct Object References

آسیب پذیری Insecure Direct Object References


آسیب پذیری Insecure Direct Object References وقتی اتفاق می افتد که برنامه با استفاده از ورودی کاربر به صورت مستقیم و بدون تغییر به Object ها دسترسی داشته باشد. بدین صورت User می تواند Authorization را Bypass نموده و به صورت مستقیم به رکورد های بانک اطلاعاتی و فایل ها دسترسی داشته باشد. این مورد معمولا با دستکاری مستقیم در Value پارامتری که به صورت مستقیم به Object اشاره دارد صورت می پذیرد. به عنوان مثال دیگر از این آسیب پذیری می توان به مشاهده فاکتور کاربران دیگر در یک سیستم فروشگاهی با تغییر مقدار پارامتر مربوط به Invoiced نمود. این مورد در URL زیر مشهود است.

http://foo.bar/somepage?invoice=65427

چگونه این آسیب پذیری را رفع کنیم ؟


  • از اشاره مستقیم به Object ها خودداری گردد. می توان به جای اشاره مستقیم از نام Object و یا عبارتی که قابل حدس نباشد استفاده نمود.
  • مقدار Value پارامتر اشاره کننده باید به صورت Hash شده در آید. مقدار Hash در بانک اطلاعاتی نگه داری شود و در هر بار اشاره، Hash در بانک اطلاعاتی به صورت غیر مستقیم به Object اشاره می نماید.
  • Bind نمودن Object های هر کاربر به Session او و رمز نمودن مقدار Session به نحوی که برای عموم قابل بازگشایی نباشد.

برای مشاهده ی سایر آسیب پذیری ها، روی این لینک کلیک نمائید.