یه اشتباه ساده در APIها:
app.get('/users/:id', (req, res) => {
return User.findById(req.params.id);
});ظاهر کد کاملاً عادیه.
ولی سؤال مهم:
آیا کاربر اجازه داره اطلاعات User ID شماره ۵۲ رو ببینه؟
اگر فقط وجود داشتن ID کافی باشه، ممکنه کاربر بتونه ID رو عوض کنه:
/users/51
/users/52
/users/53
/users/54
و اطلاعات کاربران دیگه رو ببینه.
این نوع مشکل معمولاً با عنوان IDOR / Broken Object Level Authorization شناخته میشه.
نکته مهم اینه که:
Authentication میگه:
«تو کی هستی؟»
Authorization میگه:
«تو اجازه داری این کار رو انجام بدی؟»
خیلی از APIها اولی رو درست انجام میدن ولی دومی رو فراموش میکنن.
پس دفعه بعد که API نوشتی، فقط نپرس:
«کاربر لاگین هست؟»
بپرس:
«این کاربر اجازه دسترسی به همین Resource رو داره؟»
@CodeVerse_dev