태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

Flash Player10 보안샌드박스

Flash Player 10(astro)의 베타버전이 공개된지 엊그제 같은데, 지난달 Adobe CS4출시와 곧 있을 Flex 3.2 출시로 Flash Player 10의 정식 출시가 초읽기로 다가왔습니다. 

올 4월 Flash Player9의 ExternalInterface와 NavigateToURL의 보안샌드박스 적용등으로 엄청난 충격을 받은적이 있었는데, 이번 Flash Player10에서도 역시 보안샌드박스가 변경되거나 추가되었습니다. ㅎㄷㄷㄷ 

엄청난 고생길이....... 눈앞에 선하군요.......
 

1. 변경된 사항 

1. Policy File
Flash 10에서는 meta-policy의 기본값이 all에서 master-only로 바뀝니다. 이 설정은 해당 swf파일이 존재하는 도메인 루트의 crossdomain.xml을 읽어옵니다. 그러나, meta-policy를 바꿔서 예전처럼 쓸수도 있습니다.

2. 소켓 타임아웃
액션스크립트에서 Socket, XMLSocket의 모든 securityError이벤트는 connect()메서드의 호출 이후 일정시간 경과후 발생하게 됩니다. 이것은 송출 이후 즉각적인 securityError가 더 늦게 발생하게 되며, 또한 더 일찍 연결에 성공하게되면 securityError 이벤트는 긴 딜레이가 발생하게 됩니다. 그래서, 20초의 소켓 타임아웃을 정해 두었습니다. 물론, 개발자들은 Socket.timeout과 XMLSocket.timeout를 통해서 이 시간을 조정할 수 있습니다.

3. 파일선택과 다운로드시 사용자의 직접적인 인터렉션을 필요로 합니다.
Filerefrence.browse를 통해 사용자의 로컬의 파일을 찾는 창을 띄울수 있고, Filerefrence.download를 통해 파일을 내려 받을수 있습니다.
두 메서드의 경우 종전엔 사용자의 UI 인터렉션을 필요로 하지 않았습니다만, Flash 10에서는 사용자가 직접 UI인터렉션을 취해야 작동하게 됩니다.

4. 클립보드를 지정할시 사용자의 직접적인 인터렉션을 필요로 합니다.
System.setClipboard를 통해 사용자의 클립보드에 텍스트를 지정할 수 있습니다. 종전엔 사용자의 직접적인 UI 인터렉션을 필요로 하지 않았습니다만, Flash 10에서는 사용자가 직접 UI인터렉션을 취해야 작동하게 됩니다.

 

2. 추가된 사항

1. 로컬파일을 불러오고 저장할때
Flash 10에서는 SWF파일에서 사용자 로컬의 파일을 읽어오고 또 저장할 수 있습니다. 다만, 이 메서드들은 사용자가 파일 선택창에서 직접 파일이나 경로를 선택할때만 가능합니다.

2. 풀스크린 모드에서 제한적으로 입력허용
근래의 플래시 플레이어에서는 풀스크린 모드에서는 입력이 허용되지 않았습니다. 하지만 Flash 10에서는 탭, 스페이스, 방향키의 사용이 허용됩니다.

3. RTMFP
플래시 플레이어와 플래시 미디어서버간의 통신에 UDP기반의 RTMFP를 지원합니다.

4. Paste event handler를 통한 클립보드 데이터 핸들링
Flash 9에서는 시스템 클립보드의 데이터를 불러오지 못했습니다. Flash 10에서는 새롭게 추가된 Clipboard.generalClipboard.getData() 메서드를 통해 시스템 클립보드의 데이터를 읽어올수 있습니다. 다만, flash.events.Event.PASTE 이벤트가 발생할때에만 불러올수 있습니다 -_-;;;;

링크 : http://www.adobe.com/devnet/flashplayer/articles/fplayer10_security_changes.html#head5 

특히 제일 주목이 되는것은, UI인터렉션 후 클립보드 저장이나, 파일 창띄우기, 다운로드가 가능하다는 점인데, 현재 많은 개발자들이 쓰고있는 꼼수가 대부분 새로운 샌드박스의 영향으로 막히게 되어버립니다.

예를들어, 클립보드 복사의 경우, JS로 처리할때 IE외의 브라우저는 제대로 처리되지 않는 문제가 있습니다. 이 문제를 해결하기위해, flash의 setClipboard를 쓰는데, 대부분의 경우 UI는 HTML상에서 구현하고, JS로 Flash내부의 함수를 호출해 처리하는 방법이 있는데, 이 방법이 사용이 불가능해집니다.
(사용자의 직접적인 UI인터렉션이 발생하지 않음으로)

필자의 경우 Yezzang&Naru이미지호스팅(http://img.yezzang.net)를 운영하고 있습니다. 이미지를 업로드 하게 될경우, 업로드된 이미지 주소를 받아와 자동으로 클립보드에 담기게 하는데, 이 부분에 있어서 수정을 해야할것 같습니다.. 흑흑 (ㅠㅠ)

역시 개발자에겐 야근은 기본 스펙이 되어버리는군요..

신고
Trackback 3 Comment 6
prev 1 ··· 166 167 168 169 170 171 172 173 174 ··· 185 next