Adobe AIR 런타임은
application
샌드박스라는 추가 샌드박스를 Flash Player 보안 샌드박스 모델에 추가합니다. AIR 응용 프로그램의 일부로 설치된 파일은 응용 프로그램 샌드박스에 로드됩니다. 응용 프로그램에서 로드된 다른 모든 파일의 보안 제한은 일반적인 Flash Player 보안 모델에서 지정한 제한 사항을 따릅니다.
응용 프로그램이 설치되면 AIR 패키지 내에 포함된 모든 파일이 사용자 컴퓨터의 응용 프로그램 디렉토리에 설치됩니다. 개발자는
app:/
URL 스킴을 통해 코드에서 이 디렉토리를 참조할 수 있습니다(
URI 스킴
참조). 응용 프로그램이 실행하면 응용 프로그램 디렉토리 트리 내의 모든 파일이 응용 프로그램 샌드박스에 할당됩니다. 응용 프로그램 샌드박스의 내용은 로컬 파일 시스템과의 상호 작용을 포함하여 AIR 응용 프로그램에서 사용할 수 있는 전체 권한으로 보호됩니다.
많은 AIR 응용 프로그램에서는 로컬로 설치된 이러한 파일만 사용하여 응용 프로그램을 실행합니다. 그러나 AIR 응용 프로그램은 응용 프로그램 디렉토리 내의 파일만 제한하지 않고 모든 소스에서 파일 유형을 로드할 수 있습니다. 이러한 파일에는 사용자 컴퓨터에 대한 로컬 파일은 물론 로컬 네트워크 또는 인터넷에서의 소스와 같이 사용 가능한 외부 소스에서 가져온 파일도 포함됩니다. 파일 유형은 보안 제한 사항에는 영향을 주지 않습니다. 로드된 HTML 파일의 보안 권한은 동일한 소스에서 로드한 SWF 파일의 보안 권한과 동일합니다.
응용 프로그램 보안 샌드박스의 내용은 다른 샌드박스의 내용 사용을 금지하는 AIR API에 액세스할 수 있습니다. 예를 들어 응용 프로그램에 대한 응용 프로그램 설명자 파일의 내용을 반환하는
air.NativeApplication.nativeApplication.applicationDescriptor
속성은 응용 프로그램 보안 샌드박스의 내용에만 적용됩니다. 제한된 API의 또 다른 예는 로컬 파일 시스템을 읽고 쓰는 메서드를 포함하는 FileStream 클래스입니다.
응용 프로그램 보안 샌드박스의 내용에만 사용할 수 있는 ActionScript API는
ActionScript 3.0 Reference for Adobe Flash Platform
에서 AIR 로고로 표시됩니다. 기타 샌드박스에서 이러한 API를 사용하면 런타임에서 SecurityError 예외가 발생합니다.
HTMLLoader 객체에 있는 HTML 내용의 경우 모든 AIR JavaScript API(AIRAliases.js 파일을 사용할 때
air
객체를 통해 또는
window.runtime
속성을 통해 사용 가능)를 응용 프로그램 보안 샌드박스의 내용에서 사용할 수 있습니다. 다른 샌드박스의 HTML 내용이
window.runtime
속성에 액세스할 수 없으므로 이 내용은 AIR 또는 Flash Player API에 액세스할 수 없습니다.
AIR 응용 프로그램 내에서 실행되는 내용은 다음과 같은 추가 제한을 가집니다.
-
응용 프로그램 보안 샌드박스에 있는 HTML 내용의 경우 코드를 로드한 후 문자열을 실행 코드로 동적으로 변환할 수 있는 API를 사용할 때 제한 사항이 있습니다. 이는 응용 프로그램이 잠재적으로 안전하지 않은 네트워크 도메인과 같은 비 응용 프로그램 소스의 코드를 실수로 삽입 및 실행하지 않도록 하는 것입니다. 예를 들어
eval()
함수를 사용할 때 이러한 제한 사항이 적용됩니다. 자세한 내용은
서로 다른 샌드박스의 내용에 대한 코드 제한 사항
을 참조하십시오.
-
가능한 피싱 공격을 막기 위해 ActionScript TextField 객체에 있는 HTML 내용의
img
태그가 응용 프로그램 보안 샌드박스의 SWF 내용에서 무시됩니다.
-
응용 프로그램 샌드박스의 내용은 ActionScript 2.0 텍스트 필드의 HTML 내용에
asfunction
프로토콜을 사용할 수 없습니다.
-
응용 프로그램 샌드박스의 SWF 내용은 Flash Player 9 업데이트 3에 추가된 기능인 크로스 도메인 캐시를 사용할 수 없습니다. 이 기능을 통해 Flash Player에서는 Adobe 플랫폼 구성 요소 내용을 영구적으로 캐시하고 필요 시 로드된 SWF 내용에서 다시 사용할 수 있습니다. 이 경우 내용을 여러 번 다시 로드할 필요가 없습니다.