내 MVC 응용 프로그램은 관리자와 일반 사용자로 구성됩니다. 관리자는 시스템을 사용하여 다른 고객으로 등록 할 수 있으며 사용자를 시스템에 추가 할 수 있습니다.Mvc 앱에서 Json 요청을 보호하는 가장 좋은 방법은 무엇입니까?
컨트롤러는 이미 특정 페이지에 대한 무단 액세스를 방지하기 위해 특정 컨트롤러에 권한 필터를 가지고 있습니다.
그러나 관리자 권한으로 로그인 한 사용자가 Json 게시물을 검사하지 못하도록하거나 자바 스크립트에서 가져 와서 직접 볼 수있는 특정 데이터의 ID로 'get'을 호출한다고합시다. 예 :/사용자/1
내 응용 프로그램을 테스트하면 AJAX get을 게시하여 현재 인증 된 사용자의 관리하에 있지 않은 시스템의 다른 사용자의 세부 정보를 검색 할 수 있습니다.
사용자가 데이터를 볼 수 있는지 확인하기 위해 서비스 메소드가 호출 될 때마다 액세스 확인 메소드를 작성할 수 있습니다. 장소 전체에서 액세스 확인 방법으로 응용 프로그램을 처리하지 않고이 문제를 해결할 수있는 좋은 방법입니까?
현재 구현
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 요청에서 ID를 수락하는 모든 방법에서 액세스 검사가 필요합니까? – jaffa
@jaffa, 컨트롤러에 예제와 예제 제공 –
컨트롤러가 아닌 요청 된 ID의 서비스 레이어를 확인했습니다. 이게 최선의 관행인가? – jaffa