我的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