응용 프로그램 내용이 응용 프로그램 설치 디렉토리 외부에서 로드한 내용을 안전하게 크로스 스크립팅하려면
frame
또는
iframe
요소를 사용하여 응용 프로그램 내용을 외부 내용과 동일한 보안 샌드박스로 로드합니다. 원격 내용을 크로스 스크립팅할 필요가 없지만 응용 프로그램 페이지를 응용 프로그램 샌드박스 외부에 로드하려는 경우 원본 도메인과 동일하게
http://localhost/
또는 다른 몇 가지 안전한 값을 지정하는 방법을 사용할 수 있습니다.
AIR은 프레임에 로드한 응용 프로그램 파일을 비 응용 프로그램 샌드박스로 매핑해야 할지 여부를 지정할 수 있는 프레임 요소에 새 특성인
sandboxRoot
및
documentRoot
를 추가합니다.
sandboxRoot
URL 아래의 경로로 확인되는 파일은 대신
documentRoot
디렉토리에서 로드됩니다. 보안상의 이유로 이러한 방식으로 로드한 응용 프로그램 내용은 실제로
sandboxRoot
URL에서 로드한 것처럼 처리됩니다.
sandboxRoot
속성은 프레임 내용을 배치할 샌드박스 및 도메인을 결정하는 데 사용할 URL을 지정합니다.
file:
,
http:
또는
https:
URL 스킴을 사용해야 합니다. 상대 URL을 지정하는 경우 내용이 응용 프로그램 샌드박스에 남습니다.
documentRoot
속성은 프레임 내용을 로드할 디렉토리를 지정합니다.
file:
,
app:
또는
app-storage:
URL 스킴을 사용해야 합니다.
다음은 원격 샌드박스 및
www.example.com
도메인에서 실행할 응용 프로그램의
sandbox
하위 디렉토리에 설치된 내용을 매핑하는 예제입니다.
<iframe
src="http://www.example.com/local/ui.html"
sandboxRoot="http://www.example.com/local/"
documentRoot="app:/sandbox/">
</iframe>
ui.html
페이지는 다음 script 태그를 사용하여 로컬
sandbox
폴더에서 javascript 파일을 로드할 수 있습니다.
<script src="http://www.example.com/local/ui.js"></script>
또한 다음과 같이 script 태그를 사용하여 원격 서버의 디렉토리에서 내용을 로드할 수 있습니다.
<script src="http://www.example.com/remote/remote.js"></script>
sandboxRoot
URL는 원격 서버의 동일한 URL에서 모든 내용을 마스크 처리합니다. 위의 예제에서는 AIR이 요청을 로컬 응용 프로그램 디렉토리로 다시 매핑하기 때문에
www.example.com/local/
또는 해당 하위 디렉토리의 원격 내용에 액세스할 수 없습니다. 요청은 페이지 탐색, XMLHttpRequest 또는 다른 내용 로드 방법에서 파생되었는지 여부에 상관없이 다시 매핑됩니다.