Loader.loadBytes()
메서드는 응용 프로그램이 바이트 배열에서 SWF 내용을 생성하는 방법을 제공합니다. 그러나 원격 소스에서 로드한 데이터에 대한 삽입 공격은 내용을 로드할 때 심각한 손상을 일으킬 수 있습니다. 이러한 손상은 특히 생성된 SWF 내용이 전체 AIR API 집합에 액세스할 수 있는 응용 프로그램 샌드박스로 데이터를 로드할 때 발생합니다.
실행 SWF 코드를 생성하지 않고
loadBytes()
메서드를 이용하는 합법적인 사용이 있습니다. 예를 들어
loadBytes()
메서드를 사용하여 이미지 표시의 타이밍을 제어하는 이미지 데이터를 생성할 수 있습니다. 오디오 재생을 위한 SWF 내용의 동적 생성과 같이 실행 중인 코드를
이용하는
합법적인 사용도 있습니다. AIR에서 기본적으로
loadBytes()
메서드는 사용자가 SWF 내용을 로드하도록
허용하지 않고
사용자가 이미지 내용만 로드하도록 허용합니다. AIR에서
loadBytes()
메서드의
loaderContext
속성은
allowLoadBytesCodeExecution
속성을 포함합니다. 사용자는 이 속성을
true
로 설정하여 응용 프로그램이
loadBytes()
를 사용하여 실행 SWF 내용을 로드하도록 명시적으로 허용할 수 있습니다. 다음 코드에서는 이 기능을 사용하는 방법을 보여 줍니다.
var loader:Loader = new Loader();
var loaderContext:LoaderContext = new LoaderContext();
loaderContext.allowLoadBytesCodeExecution = true;
loader.loadBytes(bytes, loaderContext);
loadBytes()
를 호출하여 SWF 내용을 로드하고 LoaderContext 객체의
allowLoadBytesCodeExecution
속성을
false
(기본값)로 설정하면 Loader 객체에서 SecurityError 예외가 발생합니다.
참고:
Adobe AIR의 이후 릴리스에서는 이 API가 변경될 수 있습니다. 그 경우 사용자는 LoaderContext 클래스의
allowLoadBytesCodeExecution
속성을 사용하는 내용을 다시 컴파일할 수 있습니다.