먼저 실버라이트를 하면서 항상 느끼는 건 정말이지 보안에 대해 편집증 적으로 철저하다는 점인데요. 물론 이게 실제 사용에서는 불편이 되겠지만 수 많은 보안 위협에 대해 효과적인 대응이 가능하다는 점에서 감수해야 할 것 같아요. 뭐 당연한 얘기지만 개방 플랫폼이 될 수록 보안적으로 민감한 리소스 접근은 제한이 더 걸릴 수밖에 없으니까요.

그런 점에서 이 문서도 쓸데 없으리만치 장황하게 접근 제약에 대해 명확한 표현을 사용하고 있는데요, 긴 문장 다 읽을 필요 없이 서두와 정리된 표를 참고하시는 게 좋을 것 같네요.


※ 이 문서는 MSDN의 URL Access Restrictions in Silverlight 2를 번역한 것으로 실버라이트2 베타2를 기준으로 합니다. 추후 변경사항이 있을 경우 업데이트 하겠지만 기본적으로 위의 문서를 참고하세요.

보안상의 이유로 실버라이트 버전 2 런타임은 System.Net 네임스페이스에 있는 WebClient와 Http 클래스들에서 사용되는 URL의 접근을 제한합니다. 비슷한 접근 제약이 실버라이트 2 런타임에 의해  System.Windows.Controls 네임스페이스에 있는 ImageMediaElement 클래스를 포함하는 다른 클래스들에도 적용됩니다. 실버라이트 2 런타임은 또한 XAML 소스 파일과 URL의 클래스에 기반한 폰트 파일에도 접근 제약을 적용합니다.

커넥션은 크로스-존, 크로스-도메인 및 크로스-스키마 URL에 접근할 때 적용받습니다. 이 제약들은 네트워킹의 위협(예를 들어, 인터넷 서버에서 실행된 실버라이트 2 기반 애플리케이션이 로컬 인트라넷에 있는 리소스에 접근하는 위협 등)을 막기위해 디자인 되었습니다.

일반적인 URL 클래스들은 다음과 같습니다.

  • 크로스-스키마Cross-scheme URL : 한 스키마(예를 들어 HTTP)를 사용하여 어떤 웹 서버에 있는 한 HTML 페이지로부터 다운로드 된 실버라이트 2 애플리케이션이 같은 서버 혹은 다른 서버에 있는 리소스를 다른 스키마(예를 들어 HTTPS)를 사용하여 접근을 시도할 때.
  • 크로스-도메인Cross-domain URL : 어떤 웹 서버에서 다운로드 된 실버라이트 2 애플리케이션이 다른 타겟 서버에 있는 리소스에 접근(예를 들어 www.gongdosoft.com에 호스트된 애플리케이션이 www.gongdosoft.net에 있는 컨텐츠에 접근을 시도하는 경우)을 시도할 때. 실버라이트 2 런타임은 일반적으로 타겟 서버로부터 이 접근을 허용할지를 결정하는 보안 정책 파일을 다운로드 하여 사용합니다.
Note:
실버라이트 2상에서 크로스 도메인 리소스를 접근할 수 있습니다. 그러나 보안 정책 파일에 명시적으로 활성화 할 필요가 있습니다. 자세한 정보는 실버라이트 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 허용 여부 같은 사이트와 스키마로는 허용.
크로스-도메인은 보안 정책 파일이 있을 경우만 허용.
같은 스키마일 경우 허용. 허용되지 않음 허용되지 않음 허용되지 않음

Note:
사용자가 이 접근 정책들 중 하나의 위반으로 인한 에러 결과를 받은 경우 에러는 정확한 이유를 가리키지 않습니다.

만약 어떤 웹 서버에 호스트 된 실버라이트 2 애플리케이션을 가지고 있고 WebClient나 HTTP 클래스를 사용하여 이 애플리케이션에서 다른 웹 서버(크로스-도메인 URL)에 저장된 리소스로 접근을 시도하면, 다른 서버가 해당 접근을 명시적으로 허용하도록 만들어진 보안 정책 파일이 없는 한 그 요청은 실패할 것입니다. 윈도우(OS)상에서 만약 인터넷 영역에서 다운로드 된 실버라이트 2 애플리케이션이 보다 제한된 영역(로컬 인트라넷, 신뢰된 사이트 혹은 로컬 머신)에 있는 사이트 URL을 요청할 경우 심지어 가능하도록 된 보안 정책이 있다고 해도 실패할 것입니다. 또한 HTTP 스키마를 사용한 사이트에서 다운로드 된 실버라이트 2 애플리케이션이 HTTP 스키마를 사용하는 타겟 크로스-도메인 사이트를 요청할 경우에도 실패할 것입니다. 또한 HTTPS 스키마를 사용한 사이트에서 다운로드 된 실버라이트 2 애플리케이션이 HTTP 스키마를 사용하는 타겟 크로스-도메인 사이트를 요청할 경우에도 실패할 것입니다.

※ 너무 하나마나 한 소리라 아래의 제약 예제는 생략했습니다.

참조
신고
Posted by gongdo


티스토리 툴바