Flash Platform 보안 개요

Flash Player 9 이상, Adobe AIR 1.0 이상

Flash Player 및 AIR 런타임에서 사용되는 대부분의 보안 모델은 로드된 SWF 파일, HTML, 미디어 및 기타 에셋에 대한 원래 도메인을 기준으로 합니다. www.example.com과 같은 특정 인터넷 도메인을 기반으로 하는 파일의 실행 가능 코드는 언제든지 해당 도메인의 모든 데이터에 액세스할 수 있습니다. 이러한 에셋은 보안 샌드박스 라는 동일한 보안 그룹에 포함됩니다. 자세한 내용은 보안 샌드박스 를 참조하십시오.

예를 들어 SWF 파일의 ActionScript 코드는 SWF 파일, 비트맵, 오디오, 텍스트 파일 및 자체 도메인의 모든 에셋을 로드할 수 있습니다. 또한 동일한 도메인에서 ActionScript 3.0으로 작성된 두 파일 간의 크로스 스크립팅은 항상 허용됩니다. 크로스 스크립팅 은 한 파일의 코드가 다른 파일의 코드로 정의된 속성, 메서드 및 객체에 액세스하는 기능입니다.

ActionScript 3.0을 사용하여 작성된 SWF 파일과 ActionScript 3.0 이전 버전을 사용하여 작성된 SWF 파일 간의 크로스 스크립팅은 지원되지 않습니다. 단, LocalConnection 클래스를 사용하여 이러한 파일 간의 통신은 가능합니다. 또한 다른 도메인의 ActionScript 3.0 SWF 파일을 크로스 스크립팅하고 다른 도메인의 데이터를 로드하는 SWF 파일의 기능은 기본적으로 차단됩니다. 그러나 로드된 SWF 파일에서 Security.allowDomain() 메서드를 호출하여 이러한 액세스를 허용할 수 있습니다. 자세한 내용은 크로스 스크립팅 을 참조하십시오.

기본적으로 다음과 같은 기본 보안 규칙이 적용됩니다.

  • 동일한 보안 샌드박스의 리소스는 항상 서로 액세스할 수 있습니다.

  • 원격 샌드박스의 파일에 있는 실행 가능 코드에서는 로컬 파일과 데이터에 액세스할 수 없습니다.

Flash Player 및 AIR 런타임은 다음과 같은 도메인을 개별 도메인으로 간주하고 각각에 대해 개별 보안 샌드박스를 설정합니다.

  • http://example.com

  • http://www.example.com

  • http://store.example.com

  • https://www.example.com

  • http://192.0.34.166

http://example.com과 같은 이름을 가진 도메인이 http://192.0.34.166 등의 특정 IP 주소로 매핑되는 경우에도 런타임은 각각에 대해 개별 보안 샌드박스를 설정합니다.

SWF 파일에서 해당 샌드박스가 아닌 다른 샌드박스의 에셋에 액세스할 수 있도록 하기 위해 개발자는 다음과 같은 기본적인 두 가지 메서드를 사용할 수 있습니다.

Flash Player 및 AIR 런타임 보안 모델에서는 내용을 로드하는 것과 데이터를 추출하거나 액세스하는 것을 구분합니다. 내용 이 시각적 미디어를 포함한 미디어로 정의된 경우 런타임은 오디오, 비디오 또는 표시된 미디어를 포함하는 SWF 파일 또는 HTML을 표시할 수 있습니다. 데이터 는 코드에만 액세스할 수 있는 항목으로 정의됩니다. 내용과 데이터는 서로 다른 방법으로 로드됩니다.

  • 내용 로드 - Flex를 사용할 경우 MXML 태그를 통해, AIR 응용 프로그램의 경우 HTML 태그를 통해 Loader, Sound 및 NetStream과 같은 클래스를 사용하여 내용을 로드할 수 있습니다.

  • 데이터 추출 - Bitmap 객체, BitmapData.draw() BitmapData.drawWithQuality() 메서드, Sound.id3 속성 또는 SoundMixer.computeSpectrum() 메서드를 사용하여 로드된 미디어 내용에서 데이터를 추출할 수 있습니다. drawWithQuality 메서드는 Flash Player 11.3 이상, AIR 3.3 이상에서 사용할 수 있습니다.

  • 데이터 액세스 - URLStream, URLLoader, FileReference, Socket, XMLSocket 클래스 등의 클래스를 사용하여 XML 파일과 같은 외부 파일에서 로드하여 직접 데이터에 액세스할 수 있습니다. AIR는 FileStream 및 XMLHttpRequest와 같은 로드 중인 데이터를 위한 추가 클래스를 제공합니다.

Flash Player 보안 모델은 내용 로드와 데이터 액세스에 대해 서로 다른 규칙을 정의합니다. 일반적으로 데이터에 액세스하는 것보다 내용을 로드하는 데 적용되는 제한이 적습니다.

일반적으로 SWF 파일, 비트맵, mp3 파일, 비디오 등의 내용은 모든 위치에서 로드될 수 있지만 로드하는 코드 또는 내용의 도메인이 아닌 다른 도메인의 내용은 별도의 보안 샌드박스로 구분됩니다.

내용을 로드하는 데는 다음과 같은 몇 가지 제한이 있습니다.

  • 기본적으로 사용자의 하드 드라이브와 같이 네트워크 주소가 아닌 위치에서 로드된 로컬 SWF 파일은 local-with-filesystem 샌드박스로 분류됩니다. 이러한 파일은 네트워크에서 내용을 로드할 수 없습니다. 자세한 내용은 로컬 샌드박스 를 참조하십시오.

  • RTMP(Real-Time Messaging Protocol) 서버로 내용에 대한 액세스를 제한할 수 있습니다. 자세한 내용은 RTMP 서버를 사용하여 제공된 내용 을 참조하십시오.

로드된 미디어가 이미지, 오디오 또는 비디오인 경우, SWF 파일의 도메인이 미디어의 원래 도메인에 있는 URL 정책 파일에 포함된 경우에만 해당 보안 샌드박스 외부에 있는 SWF 파일에서 로드된 미디어의 데이터(예: 픽셀 데이터 및 사운드 데이터)에 액세스할 수 있습니다. 자세한 내용은 데이터로 로드된 미디어 액세스 를 참조하십시오.

다른 형식의 로드된 데이터에는 URLLoader 객체를 통해 로드되는 텍스트나 XML 파일이 있습니다. 이 경우에도 다른 보안 샌드박스에서 모든 데이터에 액세스하려면 원래 도메인에 있는 URL 정책 파일을 통해 액세스 권한이 부여되어야 합니다. 자세한 내용은 URLLoader 및 URLStream 사용 을 참조하십시오.

참고: AIR 응용 프로그램 샌드박스에서 원격 내용 또는 데이터를 로드하기 위해 실행되는 코드에서는 정책 파일이 필요하지 않습니다.