우리 아키텍처는 IIS7에있는 ASP.Net 응용 프로그램으로 구성된 간단한 N 계층 모델입니다 (DiscountASP에서 호스팅 됨)는 WCF 서비스에서 메서드를 노출합니다. 그 방법들은 EF4를 사용하여 DB와 대화합니다. 클라이언트는 Silverlight 4.0에 있습니다.N 계층 응용 프로그램의 WCF 및 Silverlight 4.0 : 보안 서비스 호출 (SSL 없음, 메시지 보안 없음, x.509 없음)
세 가지 중요한 포인트 :
인증 및 Authurazation는 문제가되지합니다 - 서비스에 대한 호출은 익명하고 우리는 발신자의 신원에 대해 걱정하지 않는다.
에는 메서드에서 전송 된 데이터가 필요합니다.
우리는 누군가가 전화를 걸 수 없도록하고 싶습니다.
메시지 보안은 옵션이 아닙니다.
전송 보안 (HTTPS 및 X.509/SSL 인증서) 또한 우리가 일정 수준의 보안을 강화하기 위해 수행 그래서 단계
실버
으로 수행 할 수 있습니다 : 가비밀 키는 XAP에서 DLL의 하드 코딩 된.
이 DLL은 스크램블되어 있으므로 다시 조작 할 수 없습니다.
비밀 키는 모든 서비스 방법 호출에 대한 매개 변수로 전송됩니다.
각 방법을 시작할 때 데이터베이스에있는 원본에 대한 비밀 키를 확인하십시오.
서비스에서 MetaDataExchange 엔드 포인트를 제거하십시오.
이 최소한의 설치를 고려하고 가장 큰 결함은 아마 전송이 확보되지 않은 사실 (HTTP), 그리고 비밀 키가 노출되어, 많은 결함을합니다. 따라서 질문은 다음과 같습니다.
악의적 인 사용자가 시스템에 해를 끼치려면 비밀 키를 추출하기 위해 얼마나 많은 노력을 기울여야합니까? 노출 된 방법을 찾고이를 호출하기 시작합니까?
각 호출 (HTTPS 또는 인증서 없음)에서 자격 증명의 기본 보호를 제공 할 수있는 다른 WCFcombiantion이 있습니까?
확인 : HTTPS 정보 : 1) 사용자는 SSL 인증서를 사용해야합니까? 2) HTTPS를 사용하면 클라이언트의 서비스 액세스 가능성이 손상 될 수 있습니다. (우리는 방화벽, 커피 숍의 지역 와이파이 네트워크 등 어디에 있든 상관없이 클라이언트가 서비스에 액세스 할 수 있기를 원합니다.) –