2011-03-10 2 views
0

인사말!엔티티 프레임 워크를 사용한 다이렉트 테이블 액세스 보안

나는 최근에 EF/WCF RIA가 아닌 많은 새로운 기능을 포함하는 클라이언트 중 하나에 대한 템플릿을 만들었습니다.

EF를 통해 테이블에 직접 연결할 수 있으면 배포 시간이 크게 줄어 듭니다. 50 개 테이블 모두에 대해 더 이상 CRUD SPROC가 없습니다. 나는 기본적으로 EF가 표준 SQL 인젝션을 허용하지 않는다는 것을 읽었지만 누구나 포괄적 인 보안 개요를 제공 할 수 있는지 궁금하다. 적어도 시니어 DBA/시큐리티 CRUD SPROC의 모든 것을 쓰는 것이 필요 없다고 설득합니다.

은 내가 MSDN Security Considerations (Entity Framework), Security for WCF RIA Services을 읽고, 다른 기사의 슬루,하지만 난 SO 시도를 포기하고 몇 가지 실제 구현에 대한 보안 & EF의 측면에서 & 확실한 증거를 물어 거라고 생각했습니다.

의견이 크게

을 apprecaited하는 수석 DBA/보안 사람은 여기 나뿐만 아니라이 처리했던 방법

+0

응용 프로그램을 dev/test 환경에서 실행하고 TraceSQL 또는 SQL Server Profiler를 사용하여 SQL을 캡처 할 수 있습니다. 이러한 SQL 문은 MSDN이나 다른 곳에서 찾을 수있는 문서 이외에 많은 도움을줍니다. –

+0

나는 amit_g에 동의합니다. 나는 그 도전이 DBA와 보안 사람들을위한 기술보다 문화적이라는 것을 발견했다. –

+0

그래, 그게 여기있는 것 같다. 우리가 변화에 대한 논리적 인 주장을 제시 할 때마다 그것이 승인되었습니다. 에드를 확인해 주셔서 감사합니다! (PDX의 날씨가 마침내 바뀌기를 바랍니다.) –

답변

2
  1. 클라이언트 프로그램이 RIA 서비스를 호출하지 않고 RIA 서비스가 귀하의 ASP.NET 내부에 있으며 귀하의 통제하에 있습니다.
  2. SaveChanges와 같은 메서드를 재정 의하여 ObjectContext를 가로 채고 RIA 서비스 템플릿 클래스에서 IQueryable을 제한 할 수 있습니다.
  3. C# 또는 VB.NET 코드는 저장 프로 시저 대신 읽고 이해하기가 매우 쉽습니다.
  4. 저장 프로 시저의 유지 관리가 어려울 것입니다.
  5. RIA 서비스는 로직을 가로 채고 데이터베이스에 대해 취한 조치를 조작하고 모니터 할 수있는 메소드 템플리트를 제공합니다.
  6. 유일한 차이점은 CRUD에 대한 모니터링 및 조작 논리가 WCF RIA 서비스의 경우 ASP.NET 응용 프로그램 풀 내에서 실행되고 저장 프로 시저의 경우 데이터베이스 서버 내에서 실행된다는 것입니다.
  7. 두 경우 모두 클라이언트에 직접 액세스 할 수 없습니다.
  8. EF는 이미 작성한 모델에 대해 DB에 저장하기 전에 데이터 유효성을 검사합니다.
  9. 향후 버전의 SQL Server에는 inbuilt 모델링 도구가 제공됩니다.이 도구는 어쨌든 CRUD에 대한 저장 프로 시저를 어떤 식 으로든 비판합니다.
0

에 대한 질문을 많이했다. 귀하의 상황이 proc 함수 내보내기와 함께 여전히 EF를 사용할 수 있다는 의미에서 동일한 지 확실하지 않습니다. 내가 더 잘했다고 말할 수는 없지만 WCF RIA 보안 경계에서 DBA 직원을 교육했습니다. 누군가 인증을 받으면 procs를 호출하는 서비스 메소드를 호출 할 수 있습니다. 그래서 내 생각에 procs를 호출하는 서비스 메소드를 노출하는 데 필요한 엔티티를 노출하는 것과 커다란 차이가 없다고 생각합니다. Linq와 엔티티 사이에 CRUD 작업을하는 것이 얼마나 쉬운지를 보여줌으로써 사람들이 제한을 완화하도록 만들었습니다.

관련 문제