상상 너머 그 무언가...

플래시 보안정책 ( cross domain ) - 스크랩 - 본문

개발관련(Development)/플래시(Flash)

플래시 보안정책 ( cross domain ) - 스크랩 -

Clack 2013. 4. 5. 13:55

crossdomain

플래시 플레이어 9.0.124 버전 이후부터는 crossdomain.xml 즉, 보안정책파일을 더이상 80포트로 접근할 수 없게 되었습니다.

따라서. Security.loadPolicyFile("http://domain.com/crossdomain.xml"); 로 선언된 보안정책은 적용되지 않습니다.


이를 해결하기위해선 http 프로토콜이 아닌, https 프로토콜을 이용하여 보안정책파일에 접근하시거나, 소켓접속시 843 포트로 보안정책파일을 전송해주어야 합니다.


https 를 이용한 접근방법은, 일반적인 https 구축방법에 따라 구축하신후 기존대로 사용하면 된다.


corossdomain.xml 샘플

<<?xml version="1.0"?>>

<<!-- http://www.adobe.com/crossdomain.xml -->>

<<cross-domain-policy>>

  <<allow-access-from domain="www.helpexamples.com" />>

  <<allow-access-from domain="*.adobe.com" />>

  <<allow-access-from domain="105.216.0.40" />>

<</cross-domain-policy>>



소켓통신 crossdomain

socket.connect(host, 80)을 호출하면 80 포트로 연결하기 전에 host의 843 포트로 연결합니다. 이 포트에는 socket master policy file을 반환하는 서버 애플리케이션이 리슨하고 있어야 합니다. 프로토콜은 다음과 같이 매우 간단합니다. 


플레시 플레이어 -> 정책 파일 서버(Policy File Server)

<policy-file-request/>


정책 파일 서버 -> 플레시 플레이어

<?xml version="1.0"?>

<cross-domain-policy>

    <site-control permitted-cross-domain-policies="master-only"/> 

    <allow-access-from domain="*.tabslab.com" to-ports="80" />

</cross-domain-policy> 


정책 파일 서버는 843 포트를 리슨하고 있다가 <policy-file-request/> 요청이 들어오면 정책 파일(XML)을 전송하고 소켓을 닫으면 됩니다.


SWF 파일이 소켓으로 연결하고자 하는 곳에 정책 파일 서버가 존재해야 하고, 정책이 tabslab.com 도메인에서 배포된 SWF에 대해서 80 포트만 접속을 허락하니 그 외의 모든 연결은 보안상 오류로 취급됩니다. 따라서 정책 파일 서버가 없거나 정책 파일 서버가 허락하지 않는 from 도메인과 포트로의 접근은 플레시 플레이어 자체가 제한해 버립니다. 아무곳으로의 통신을 막아 보안성을 높이게 되는거죠.


원래의 목적인 소켓 기반 HTTP 업로드를 위해 단계 별로 설명하자면...

(1) 도메인 내에서 업로드를 받는 서버의 방화벽에서 843 포트를 개방합니다. 

(2) 정책 파일 서버를 설치한 후 가동시킵니다. Telnet으로 연결 후 <policy-file-request/>를 전송해 올바른 응답을 하는지 테스트합니다.

(3) socket.connect(host, 80)로 연결 테스트합니다.


Security 클래스 메소드

Security.loadPolicyFile( "*" );   해당 플래시 파일에서 모든 ip주소에 대한 다른 서버에 있는 데이터를 로드할 수 있도록 허용할지 여부를 결정


Security.allowDomain( "*" );  크로스 무비 스크립팅, 다른 도메인의 SWF파일에 사용권한을 제공합니다. swf파일의 변수, 객체, 속성, 메서드 등을 검사 및 수정할 수 있도록 권한 부여

allowDomain

- allowDomain -


출처 : http://blog.naver.com/PostView.nhn?blogId=ddula97&logNo=30110468470&viewDate=&currentPage=1&listtype=0

   http://livedocs.adobe.com/flash/9.0_kr/ActionScriptLangRefV3/flash/system/Security.html#allowDomain()



이외에 플래시 플레이어 보안에 관한 내용은 아래 주소에 자세히 나와있다.

http://livedocs.adobe.com/flash/9.0_kr/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00000347.html