Entity Framework를 사용하여 데이터를 보안하기위한 옵션/솔루션에는 어떤 것이 있습니까?Entity Framework를 사용한 데이터 보안
여기 양식에 대한 이야기는하지 않으며 여기서는 사용자가 인증 된 것으로 가정합니다.
설명하기 위해, 나는 웹 API 컨트롤러 중 하나를 연결했고 이것이이 방법 일지 궁금합니다. 내가 물어 보는 이유는이 모든 로직을 모든 컨트롤러에서 어떤 데이터에 표시 할 것인가보다 쉬운 방법이 있는지 궁금해하는 것입니다.
또한 breezejs 및 odata와 같은 시스템을 살펴보면 $ expanding = TrafficImages를 쿼리에 추가 할 수 있으므로 사용자가 내 구멍 데이터베이스를 가져 오지 못하게 할 수 있습니다.
요약하면, 사용자가 감각적 인 데이터를 다운로드 할 수 없도록 노출 된 데이터를 보호하는 방법은 무엇이 있습니까?
[AllowAnonymous]
public object GetTheoryTests()
{
var identity = ((ClaimsIdentity)((ClaimsPrincipal)HttpContext.Current.User).Identity);
//if (HttpContext.Current.User.Identity.IsAuthenticated)
if (!identity.IsAuthenticated)
return db.TheoryTests.Include(t=>t.TrafficImages).Where(t=>t.PublicAvalible)
.Select(t => new { Id = t.Id, Title = t.Title, Images = t.TrafficImages }).AsEnumerable();
if (User.IsInRole("WebAdmins"))
return db.TheoryTests.AsEnumerable();
var key = identity.GetProvider();
var member = db.Members.Include(m=>m.PayedTheoryTests).SingleOrDefault(m=>m.Identities.Any(
i=>i.identityprovider == key.provider &&
i.nameidentifier == key.id));
if(member!=null)
return db.TheoryTests.Include(t => t.TrafficImages).Where(t => t.PublicAvalible).Select(t => new { Id = t.Id, Title = t.Title, Images = t.TrafficImages }).AsEnumerable();
else
return db.TheoryTests.Include(t => t.TrafficImages).Where(t => t.PublicAvalible)
.Union(member.PayedTheoryTests).Select(t => new { Id = t.Id, Title = t.Title, Images = t.TrafficImages }).AsEnumerable();
}
생각해 보면, 내가 놓친 것은 사용자 상태에 따라 내 데이터베이스의 뷰 모델이 아닌 것입니다. 제한된 데이터 표시와 고급 작업을위한 동일한 데이터베이스의 두 개의 엔티티 프레임 워크를 만들 솔루션일까요?