我的MVC應用程序由管理員和普通用戶組成。管理員用戶可以使用系統註冊爲不同的客戶,並且可以將他們各自的用戶添加到系統中。如何最好地保護Mvc應用程序中的Json請求?
控制器已經在某些控制器上擁有授權過濾器,以防止未經授權訪問某些頁面/ json。
但是,說我有一個管理員用戶登錄,什麼阻止他們檢查Json帖子/獲取JavaScript並手動調用一個'獲取'與特定數據的ID'被查看?例如/ Users/1
測試我的應用程序,我可以發佈AJAX get,以檢索系統中未處於當前已通過身份驗證的用戶管理下的另一用戶的詳細信息。
無論何時調用服務方法以查看用戶是否可以查看數據,我都可以編寫訪問檢查方法。他們是否有任何解決這個問題的好方法,而不用在整個地方亂扔垃圾應用程序?
例如Current Implementation
public class PeopleController : ApplicationController
{
public ActionResult GetMemberDetails(int memberId)
{
var member = _peopleService.GetMemberById(memberId);
return Json(member, JsonRequestBehavior.AllowGet);
}
}
public class PeopleService : IPeopleService
{
public MemberModel GetMemberById(int memberId)
{
// Void function which throws Unauthorised exception
MemberAccessCheck(memberId);
var member = Mapper.Map<Member, MemberModel>(_memberRepository.GetById(memberId));
return member;
}
}
MemberAccessCheck函數在我的服務中被調用很多次。
那麼我仍然需要在每個方法中接受來自Json請求的Ids的訪問檢查? – jaffa
@jaffa,給你的控制器和例子 –
我已經檢查了服務層,在被請求的記錄的id而不是在控制器上。這是最佳做法嗎? – jaffa