먼저 실버라이트를 하면서 항상 느끼는 건 정말이지 보안에 대해 편집증 적으로 철저하다는 점인데요. 물론 이게 실제 사용에서는 불편이 되겠지만 수 많은 보안 위협에 대해 효과적인 대응이 가능하다는 점에서 감수해야 할 것 같아요. 뭐 당연한 얘기지만 개방 플랫폼이 될 수록 보안적으로 민감한 리소스 접근은 제한이 더 걸릴 수밖에 없으니까요.
그런 점에서 이 문서도 쓸데 없으리만치 장황하게 접근 제약에 대해 명확한 표현을 사용하고 있는데요, 긴 문장 다 읽을 필요 없이 서두와 정리된 표를 참고하시는 게 좋을 것 같네요.
※ 이 문서는 MSDN의 URL Access Restrictions in Silverlight 2를 번역한 것으로 실버라이트2 베타2를 기준으로 합니다. 추후 변경사항이 있을 경우 업데이트 하겠지만 기본적으로 위의 문서를 참고하세요.
보안상의 이유로 실버라이트 버전 2 런타임은 System.Net 네임스페이스에 있는 WebClient와 Http 클래스들에서 사용되는 URL의 접근을 제한합니다. 비슷한 접근 제약이 실버라이트 2 런타임에 의해 System.Windows.Controls 네임스페이스에 있는 Image와 MediaElement 클래스를 포함하는 다른 클래스들에도 적용됩니다. 실버라이트 2 런타임은 또한 XAML 소스 파일과 URL의 클래스에 기반한 폰트 파일에도 접근 제약을 적용합니다.
커넥션은 크로스-존, 크로스-도메인 및 크로스-스키마 URL에 접근할 때 적용받습니다. 이 제약들은 네트워킹의 위협(예를 들어, 인터넷 서버에서 실행된 실버라이트 2 기반 애플리케이션이 로컬 인트라넷에 있는 리소스에 접근하는 위협 등)을 막기위해 디자인 되었습니다.
일반적인 URL 클래스들은 다음과 같습니다.
- 크로스-스키마Cross-scheme URL : 한 스키마(예를 들어 HTTP)를 사용하여 어떤 웹 서버에 있는 한 HTML 페이지로부터 다운로드 된 실버라이트 2 애플리케이션이 같은 서버 혹은 다른 서버에 있는 리소스를 다른 스키마(예를 들어 HTTPS)를 사용하여 접근을 시도할 때.
- 크로스-도메인Cross-domain URL : 어떤 웹 서버에서 다운로드 된 실버라이트 2 애플리케이션이 다른 타겟 서버에 있는 리소스에 접근(예를 들어 www.gongdosoft.com에 호스트된 애플리케이션이 www.gongdosoft.net에 있는 컨텐츠에 접근을 시도하는 경우)을 시도할 때. 실버라이트 2 런타임은 일반적으로 타겟 서버로부터 이 접근을 허용할지를 결정하는 보안 정책 파일을 다운로드 하여 사용합니다.
- 크로스-존Cross-zone URL : 인터넷 익스플로러는 각각의 영역zone에 적용되는 보안 레벨을 가진 보안의 컨셉을 정의합니다. 여기에는 인터넷, 로컬 인트라넷, 신뢰된 사이트, 제한된 사이트의 네 영역이 정의되어 있습니다. 거기에 더해 로컬 머신은 또 다른 영역으로 고려됩니다. 크로스-존 URL은 어떤 보안 영역에 있는 웹 서버로부터 다운로드 된 실버라이트 애플리케이션이 다른 보안 영역에 있는 타겟 서버에 있는 리소스에 접근을 시도하는 경우를 말합니다. 크로스-존 접근 제약은 인터넷 영역에 있는 서버로부터 다운로드 된 실버라이트 2 애플리케이션이 더 신뢰할 수 있는 로컬 인트라넷이나 신뢰된 영역 및 로컬 머신 영역에 있는 리소스에 접근하는 것으로부터 보호하기 위해 디자인 되었습니다. 이것은 원격 인터넷 서버에서 실행된 실버라이트 2 애플리케이션이 로컬 인트라넷과 다른 리소스에 접근하는 것으로부터 보호를 말합니다. 크로스-존 접근은 타겟 서버에 접근이 허용된 리소스일지라도 막힙니다. 크로스-존 접근은 로컬 인트라넷 영역에 있는 서버에서 다운로드 된 애플리케이션이 인터넷 서버에 있는 리소스에 접근할 때에는 제약받지 않는 다는 점에 주의하세요. 그러나 모든 크로스-도메인 접근이든지 보안 정책 파일을 필요로 합니다. 크로스-존 접근 제약은 윈도우(OS) 상에서 실행된 실버라이트 2 애플리케이션에만 구현되어 있습니다. 보안 영역과 크로스-존 접근의 컨셉은 Apple의 OS X에서 실행된 실버라이트 2 애플리케이션에서는 아직 지원되지 않습니다.
다음 표는 WebClient와 HTTP 클래스들에 사용되는 URL 접근 제약과 다른 실버라이트 클래스 및 컴포넌트에서의 제약들을 포함한 규칙을 정리합니다.
|
WebClient 와 HTTP 클래스 | Image 클래스, 프로그레시브 다운로드 MediaElement 클래스(media, images, images, ASX, etc. | XAML 소스 파일 | 폰트 파일 | 미디어 스트리밍 |
허용된 스키마 | HTTP, HTTPS | HTTP, HTTPS, FILE | HTTP, HTTPS, FILE | HTTP, HTTPS, FILE | HTTP |
크로스-스키마 접근 | 허용되지 않음 | 허용되지 않음 | 허용되지 않음 | 안됨 | HTTPS에서는 허용되지 않음 |
크로스-도메인 접근 | 보안 정책 파일 필요. HTTPS에서 HTTPS라면 허용되지 않음. | HTTPS에서 HTTPS가 아닐 경우 허용. | HTTPS에서 HTTPS가 아닐 경우 허용. | 허용되지 않음 | HTTPS에서 HTTPS가 아닐 경우 허용. |
크로스-존 접근(Windows) | 인터넷 영역에서 더 제한된 영역으로의 접근은 허용되지 않음. | ||||
재전송Redirection 허용 여부 | 같은 사이트와 스키마로는 허용. 크로스-도메인은 보안 정책 파일이 있을 경우만 허용. |
같은 스키마일 경우 허용. | 허용되지 않음 | 허용되지 않음 | 허용되지 않음 |
만약 어떤 웹 서버에 호스트 된 실버라이트 2 애플리케이션을 가지고 있고 WebClient나 HTTP 클래스를 사용하여 이 애플리케이션에서 다른 웹 서버(크로스-도메인 URL)에 저장된 리소스로 접근을 시도하면, 다른 서버가 해당 접근을 명시적으로 허용하도록 만들어진 보안 정책 파일이 없는 한 그 요청은 실패할 것입니다. 윈도우(OS)상에서 만약 인터넷 영역에서 다운로드 된 실버라이트 2 애플리케이션이 보다 제한된 영역(로컬 인트라넷, 신뢰된 사이트 혹은 로컬 머신)에 있는 사이트 URL을 요청할 경우 심지어 가능하도록 된 보안 정책이 있다고 해도 실패할 것입니다. 또한 HTTP 스키마를 사용한 사이트에서 다운로드 된 실버라이트 2 애플리케이션이 HTTP 스키마를 사용하는 타겟 크로스-도메인 사이트를 요청할 경우에도 실패할 것입니다. 또한 HTTPS 스키마를 사용한 사이트에서 다운로드 된 실버라이트 2 애플리케이션이 HTTP 스키마를 사용하는 타겟 크로스-도메인 사이트를 요청할 경우에도 실패할 것입니다.
※ 너무 하나마나 한 소리라 아래의 제약 예제는 생략했습니다.
참조
Submit comment.