'clipboard'에 해당되는 글 1건

  1. 2009.01.17 Flash 10 에서 클립보드 카피(Clipboard Copy)에 대한 이슈

최근에 Flash 10 패치되면서 클립보드 카피가 지원되지 않게 되었는데요.
9까지 잘되던 것이라 크게 생각하지 않고 있었는데 최근 지인이 여쭤봐서 테스트 해봤더니 모두 안되더군요. 


그래서 구굴링을 열심히 했지만 해결책은 찾지 못하고 있었는데 미국시간으로 어제 Ajaxian.com 에 Zero Clipboard라는 라이브러리에 대한 포스팅이 있었네요.   차차 알아보기로 하고 원인부터 알아봅니다.


Flash 10 으로 패치되면서 보안정책이 많이 바뀌었나 보네요.


User-initiated action requirements in Flash Player 10
http://www.adobe.com/devnet/flashplayer/articles/fplayer10_uia_requirements.html


위의 링크에 보면

 

Clipboard: The ActionScript 2.0 and ActionScript 3.0 API called System.setClipboard(), available in Flash Player 9 and earlier, now requires user interaction to write to the system Clipboard. In addition, the new Clipboard.generalClipboard object in Flash Player 10 can read and write the system Clipboard. Writing to the system Clipboard using either API requires the write to happen as the result of a user-initiated action. In addition, reading from the system Clipboard using the new ActionScript 3.0 API, Clipboard.generalClipboard.getData, can succeed only as the result of a paste event handler. Since a paste event handler can be triggered only by activating the context menu with the mouse (by right-click or Control-click, depending on operating system) or by using the appropriate keyboard shortcut for paste (Control+V or Command+V), APIs executing inside a paste handler are the de facto result of a user-initiated action. These restrictions avoid the problem of a SWF being able to set Clipboard contents unbeknownst to the user.


 

 

간단히 요약하자면 Flash 9 이하 버전에서는 System.setClipboard() 를 통해서 이용 가능했지만 지금은 유저의 상호작용이 필요하다고 합니다.


ExternalInterface를 통해서 Flash에 접근하여 Clipboard를 접근하거나 하는 것이 가능했지만 코드나 실제로 사용자에 요청되지 않는 것들에 대해서는 지원하지 않는다고 Adobe에서 발표하였습니다.

안타깝지만 전혀 없지는 않을 것입니다.  어떻게 사용자의 경험을 그대로 살리고 클립보드 카피를 지원할 것인가에 대해 또 다른 연구가 지행 되리라 봅니다.


이에 Zero Clipboard라는 JavaScript 라이브러리는 이 문제에 있어서 흥미를 갖고 가려운 곳을 긁어주려 하고 있습니다.


프로젝트 사이트 : http://code.google.com/p/zeroclipboard/


이 라이브러리의 키 포인트는 Clickjacking 이라는 기술을 사용한 것입니다.  Clickjacking 은 원래 웹 유저들을 속이기 위한 악의적인 기술중에 하나입니다.  작년 보안 취약점으로 이슈가 되었던 내용들이 찾아보니 좀 있더군요.  아래 내용을 통해서 좀더 많은 정보를 얻을 수 있구요.  이 동영상은 기사중 일부인 실제 시연 영상입니다.



위키 : http://en.wikipedia.org/wiki/Clickjacking
관련기사 : http://boanchanggo.tistory.com/363


첨부한 동영상을 본다면 Zero Clipboard 라이브러리의 기초적인 구현 방법을 이해하실 수 있습니다.  또한 Wiki를 통해서 상세한 구현 설명도 해놓았으니 참고하시기 바랍니다.

 

http://code.google.com/p/zeroclipboard/wiki/Instructions


프로젝트 위키 내용 중 가장 핵심적인 내용은 다음과 같습니다.

 

This library is fully compatible with Flash Player 10, which requires that the clipboard copy operation be initiated by a user click event inside the Flash movie. This is achieved by automatically floating the invisible movie on top of a DOM element of your choice. Standard mouse events are even propagated out to your DOM element, so you can still have rollover and mouse down effects.


바로 이미 유저의 클릭 이벤트를 가로챌 Flash를 사용자가 선택한 DOM 엘리먼트의 가장 앞쪽에 눈에 보이지 않게 띄웁니다. 그리고 표준 마우스 이벤트들은 DOM 엘리먼트 밖으로 전파된다는 점을 이용한 것입니다.  빠른 생각과 빠른 시도 매우 좋습니다. ^-^ But…


Zero Clipboard 라이브러리는 최초 시도와 기초적인 구현 방법에 대한 제시로서는 매우 좋은 자료임에는 분명해 보이지만 실제 다운로드 받아서 보니 많은 사용자 경험과 시스템적인 지원을 위해 매우 많은 기능이 들어가 있네요.  사용하기 나름이겠지만 서비스에 따라 활용도는 많이 달라질것 같습니다. 


쉽게... 클릭해서 클립보드에 카피하기를 위해 저리 복잡한 짓을 해야 할까? 라는 생각이 먼저 듭니다.
서비스에 맞게 재 구현해서 사용하는 것이 더 나을 것이라는 생각도 드네요.


신고
Posted by Rhio.kim