밤하늘의 실제별, 나도 가질 수 있다?!

 
Flash Player 10이 정식 배포되면서 FileReference의 보안정책과 기능이 많이 변동되었다.

그 결과 Ajax를 통해 1x1 픽셀짜리 크기의 Flash를 제어하여 사용했던 파일 업로더 기능들이 모두 무용지물이 되었다. 그래서 이 기능을 사용하는 TextCube, 제로보드 XE, Flickr, WordPress 등을 사용하는 유저들은 큰 타격을 입은 것처럼 느끼고 있다. Adobe는 왜 굳이 기능을 변동시켜 기존 사용자들을 불쾌(?)하게 만들수 밖에 없었는가? 재미있는 일은 어떤 사용자는 10 설치했다가 다시 9으로 다운그레이드 하여 설치하는 웃지 못할 상황도 발생하고 있다. 같은 상황인지 모르겟지만 XP사용자가 Vista 설치했다가 다시 XP로 다시 옮기는 것처럼 말이다.

앞으로 설명할 것이지만, 물론 Adobe가 FileReference에 대한 보안정책과 기능을 변경할 밖에 없었던 불가피한 사항은 분명히 있었다. 하지만 Adobe사가 미리 전체적인 공지를 오래전부터 (가령, 언제 배포할 것인가에 대한 시기를...) 사용자들에게 잘 알려줬더라면 이런 충격을 입지 않았을 것이다. 나름대로 생각하건데 MS의 실버라이트의 정식 배포에 맞춰서 정책적으로 Adobe에서도 뭔가 해야만 한다는 압박감이 나름대로 작용했나보다. 어쨌든 CS4, Flex 4등이 완벽히 배포되지 않은 상태에서 Flash Player 10의 공식 배포는 타격으로 다가올 수밖에 없다.
Flex 개발자로써 본인도 Adobe의 이런 정책적 대응에 불만이 많지만 그래도 어짜피 엎지러진 물이다. 이제 빨리 대응책을 마련하고 새로운 기술을 빨리 습득해 해결책을 제시하는 것이 개발자의 의무라고 생각하기 때문에 Flash Player의 FileReference의 보안 또는 기능 변동 원인과 결과를 나름대로 분석해볼 필요가 있을 것이다.

변동된 사항을 살펴보면서 변동에 대한 원인과 결과를 분석해보도록 하겠다.


1. FileReference의 보안상 제한된 내용


외부에서 ExternalInterface를 통해 FileReference의 browse() 함수를 직접 엑세스 할 수 없고 반드시 마우스에 의한 사용자 인터렉션(반응)이 있어야 사용할 수 있다.

왜 이처럼 보안이 강화될 수 밖에 없게 되었는가 이해해 보자.

기존 방식의 보안상 취약점 분석
이번 보안 변경으로 인해 앞서 설명한 1x1 픽셀짜리 Flash를 만들어 Ajax로 FileReference의 browse()를 호출하여 선택한 파일을 바로 서버로 전송하고 그 결과를 Ajax로 받아내는 방식을 사용할 없게 되었다. 이 방식은 보안상 매우 취약하다. 가령 1x1 픽셀짜리 Flash를 웹페이지에 1000개 달아서 Ajax 통신을 통해 Flash의 FileReference의 browse() 함수를 무작위로 호출시킨다고 가정해보자. 아마 짜증^1000이 될 것이다. 물론 본인은 이런 악성코드를 본적이 없지만 충분히 그럴 수 있다고 생각한다.

기존 방식의 보안 문제로 추가될 수 없었던 기능
Flash Player 10 이전 버전은 Ajax가 FileReference를 직접 엑세스 할 수 있기 때문에 보안적인 문제로 사용자의 로컬 데이터를 엑세스 하는 기능을 넣을 수 없게 된다. 무슨 말인고 하니, 만약 기존과 같은 상황에서 로컬 데이터를 엑세스할 수 있게 한다면 HTML문서에 Ajax와 Flash를 달아놓고 이 문서에 접속한 사용자의 로컬 특정 파일을 변경시키는 바이러스나 악성코드를 심어놓을 수 있게 되는 것이다. 그래서 FileReference에는 로컬파일을 직접 엑세스 하는 기능을 추가할 수 없었던 것이다.

Flash Player 10 이전 버전은 앞서 설명한 보안문제로 로컬파일을 엑세스 할 수 없어 이미지 에디터등을 만들때에 로컬파일을 서버에 전송하고 다시 받아와서 편집할 수 밖에 없는 불편함이 존재했다. 그 결과 개발도 번거롭고 사용자들도 일반 ActiveX 이미지 에디터와 비교할때 불편함을 느낄 수 밖에 없었을 것이다.

1x1 픽셀짜리 Flash 업로더를 사용할 없다면 이제 어떻게....??
Ajax에 버튼을 눌러 Flash를 제어하는게 아니라 Flash에 직접 버튼을 만들어 FileReference의 browse()를 호출할 수 있도록 하면 해결할 수 있다. 이제 1x1 픽셀 Flash가 아니라 버튼이 있는 NxN 크기의 Flash 파일 업로더가 되는 것이다. 나머지 기능은 기존과 다를바 없다. 본인은 이에 관련된 다중 파일 업로드 Flex 소스를 공개했다. http://blog.jidolstar.com/397참고하길 바란다.


Flash Player 10이 FileReference를 Ajax로 엑세스한 것을 방지한 이유와 왜 지금까지 FileReference로 로컬파일 엑세스를 할 수 없었는가를 보안적인 문제를 통해 이해하는 것이 중요하다고 볼 수 있다.


2. FileReference의 추가된 내용

 
Flash Player 10부터 로컬 파일을 서버에 전송하지 않고도 직접 엑세스가 가능해졌다. 단, 마우스를 이용한 사용자 인터렉션을 통해 가능하다. 이를 이용하면 로컬 파일을 Flash 컨텐츠 위에 올려 직접 가공하고 바로 로컬에 저장할 수 있는 것이다. 이는 FileReference의 load()와 save()를 통해 가능하다.

이미 1번 보안 강화가 될 수 밖에 없었던 이유를 언급했기 때문에 이에 대한 내용은 충분히 설명했다고 생각한다. 아래 부가적인 설명은 추가된 기능으로 얼마나 강력해졌는가 살펴본다.

Flash Player 10부터 로컬파일을 사용자 인터렉션 후 엑세스하는 기능이 추가됨에 따라 이제 Flash나 Flex로 만든 이미지 에디터가 더욱 강력해질 있다. 즉 사용자 인터렉션만 있다면 로컬 이미지를 서버에 전송하지 않고도 직접 로컬 이미지를 가공할 수 있게 된다. 이미지 에디터 뿐만 아니다. 로컬파일을 선택해 압축해서 다시 로컬에 저장하는 프로그램도 만들 수 있다. Flash Player 10 이전에는 이런 작업할려면 반드시 서버에 올렸어야만 했지만 이제 그런 과정이 생략된 셈이다. 어떤가? 개발자라면 머리속에서 이 기능을 어떻게 활용할 것인가 떠올리려 노력해야 할 것이다.



마무리

Flash Player 10은 분명 좋아졌다. 각종 3D 렌더링 기능, 포퍼먼스의 향상, 보안정책의 강화등 좀더 업그레이드된 고급 기술로 발전해나가는 것이 분명한 것이다. Adobe가 정책적 문제에 있어서 실수한 것이 분명하지만 비판만 하기 보다는 Flex/Flash 개발자들이 개발한 각종 컨텐츠가 더욱 풍성해질 수 있다는 장점도 고려해보자. 앞으로 Adobe RIA 기술의 발전은 결국 개발자들과 사용자들에게 유익을 남길 것이라 기대한다. ^^



관련내용

Flash Player 10 FileReference 변경
[FP10] FileReference는 어떻게 달라졌을까?
Flash Player10 보안샌드박스
Adobe Flash Player 10 정식 배포
Flash Player 10에 맞춘 다중 파일 업로더(본인 제작)


글쓴이 : 지돌스타(http://blog.jidolstar.com/397)

  • 포스팅이 유익하셨다면 지돌스타 블로그를 구독하세요 ->  
  • Adobe RIA기술과 천문학 분야에 관심있으신 분은 지돌스타 블로그를 E-mail 로 구독할 수 있습니다.
profile image

知之者不如好之者 好之者不如樂之者(아는 자는 좋아하는 자만 못하고 좋아하는 자는 즐기는 자만 못하다. 공자)

  1. 찬익 2008/10/26 07:33 답글수정삭제

    이것도 일종의 출제자의 의도 파악 문제.. ㅎㅎ

    게다가, 보안 관련 변경 사항도 지난 8월부터 미리 공지가 되었어요.
    다만.. 다들 관심이 없었을 뿐..;

    이런 보안 정책 변경은 예전부터 종종 있던 일이라..
    운영을 맡으신 분들께서 항상 신경을 쓰고 있어야한다는 생각.. ㅎㅎ

    • 지돌스타 2008/10/26 13:58 수정삭제

      ㅎㅎ 네 분명 공지자체는 있었는데....
      문제는 갑자기 릴리즈 되었다는 사실인 것 같습니다. 언제 하겠다는 명시가 없었던 것이 가장 큰 문제였던것 같아요 ^^

      사용자들은 이러한 문제를 알턱이 없으니, 개발자가 이리저리 챙겨야하는것은 어쩔 수 없겠네요.

  2. 희희덕 2008/10/26 19:18 답글수정삭제

    개인적으로 생각하는건, 제가 CS4 베타를 받아 진행했을때 NDA가 10/15일까지로 걸려있었습니다. ㄷㄷ
    그런데 실버라이트 정식버전은 10/14일에 출시되었고, FP10과, CS4제품군 출시가 10/16일이 된게 뭔가 업체들 사이의 모종의 거시기가 있는듯 싶습니다..
    (원래 지난번에 들었을땐 CS4가 MAX에 맞춰 11월 중에 유통된다고 하셨는데..)

  3. Flash10 대응 Textcube 1.7.5.1 패치 공개

    Tracked from 텍스트큐브 공지사항 2008/10/29 17:24

    Adobe Flash 10에서 이전 버전까지 지원하던 몇몇 기능들의 스펙이 변경됨에 따라 텍스트큐브 1.7.5 이하에서 플래시 업로더 및 트랙백 복사 기능이 동작하지 않는 문제가 있습니다. 텍스트큐브 1.7.6 발표후보 2에서는 새로운 방법을 사용하도록 패치가 되어 있지만, 텍스트큐브 1.7.6에서 추가되고 변경되는 부분이 많아 발표 일정이 예정보다 늦어지고 있습니다. 그래서 텍스트큐브 1.7.5용 패치를 먼저 배포합니다. 해당 패치의 압축을 풀어...

  4. Flayer Player 10 보안 문제

    Tracked from takeone 2009/01/22 17:40

    이번에 Flash Player 10 으로 업데이트 되면서 기존의 것들이 문제가 많은 부분이 있다. 몇일전에 한글 입력문제 버그도 있었는데 이건 미리 공지는 되었다고 한다. 버그는 아니고 보안정책 자체가 바뀐것. 로컬의 정보를 불러와 이리저리 건드릴수 있다는 점은 멋지다. 시도해볼만한 가치가 있을듯...

트랙백 주소 :: http://blog.jidolstar.com/397/trackback/
옵션
댓글 달기