Saladin’s Blog

보안샌드박스 Proxy 우회접근법

Posted on: 1월 30, 2008

갑자기 숨이 턱 막혔었다. 얼굴이 빨개지고 말이다. 이것은 한무리의 복병이었다. as3에 새로 적용된 어이없는 크로스도메인 보안정책때문이다. 요체는 어떤 원격의 서버의 프로그램이 또 다른 남의 서버의 자원을 긁어가지 못하도록 하는 것이다. 이것이 필요 이상으로 강력해 도리어 개발하는 사람의 입장에서는 짜증이 나는 일이되는 것이다. 

플래시 어플리케이션 내부에서 XMLSocket이나 URLRequest,  URLLoader와 같은 네트워크API들이 호출될때. Flash player 9는 항상 요청하는 대상의 서버의 최상위 루트주소(즉 오리지날 도메인주소)에 있는(있어야)crossdomain.xml파일을 체크하게 된다. 이때 요청자의 서버가 등록이 되있지 않거나 보안정책파일 자체가 누락된 경우 접근을 스스로 막어버리게되는 메커니즘이다. 

아무런 걱정없이 코딩했다. 어느덧 20000줄이 가까워져가고 test모드를 계속 돌려보면서 아무생각없이 잘 진척되고 있었다. 이제 슬슬 넣을건 다 넣었으니 브라우저에서 돌려볼까? 하고는 서버에 올렸다. 주소치고 열었다. 

 Requesting started to Rss data, please wait … 

2초면될것이 한 1분동안 같은 메세지를 뿌리고 있었다. 

사소한 문제겠지. 그때 잠깐 봤던 원격보안문젠가 뭔가겠지. 그랬다. 인터넷 검색결과.. 데이터를 제공하는 서버에서 요청하는 서버에 대해서 크로스도메인 허가를 하지 않으면 아예 못 읽도록 막아버린다는 것이다! 소켓으로 긁어와서 저장해서 한다는 사람도 있고, 구글API를 이용한단 사람도 있고 가지 각색에다 그냥 설정값바꿔선 해결이 안되는 사소하면서도 중차대한 문제였다. 알면 알수록 일반적인 보안 설정변경 따위로는 안되는 문제였다. 

하루웬종일 온갖 꽁수를 다 부려가며 땜빵질을 해봤다. 

이미지를 원시바이트 단위까지 내려가서 쪼갠다음 복제해서 객체에 아예 다시 새로 써버리면 보안이고 뭐고 무시 되겠지. 안됨. yahoo에 계정을 만들고 이메일 계정에 이미지를 로드하는 함수가 들어있는 swf를 업로드하고 이 swf한테 크로스스크립팅으로 로드하라고 하면 되겠지. 안됨

Loader로 불러서 Bitmapdata를 복제한다음 요걸 DisplayObject로 다시 감싸면 되겠지. 안됨

해서 유일하게 모든 사이트에 크로스도메인을 허가한다는 Flickr의 이미지만을 잔뜩 요청하는 것으로 포기하던차에

 

다음날 새벽 삽질종료. 해결법의 결론부터 말하자면 이것이다.

자신이 서버를 php를 이용해 proxy 서버로 셋팅하여 요청하는 것이다. 

예를 들어 yahoo RSS의 주소로 직접접근해 읽어오면 보안에러가 났다. 물론 브라우저 상에서는 잘 열리지만. 프로그램 안으로 가지고 오는 것이 문제다. 안 가져와진다. 

http://rss.news.yahoo.com/rss/topstories 

그러나 가상 proxy 스크립트를 짜놓고 돌리면 도메인을 자기 도메인으로 먹기에 보안에러를 속일 수 있는것이다. 즉, 지름길을 놔두고 먼길로 돌아가는 (우회하는)방법이다. 

http://www.vdesire.com/proxy?req=http://rss.news.yahoo.com/rss/topstories

 이렇게… 

요는 직접 타 서버에 있는 것을 엑세스하는 것이 아니라 php를 통해 그 페이지를 요청하고, 이것이 통째로 자신의 서버로 불러진다음 그것을 읽는 방식이므로 2배의 트래픽이 발생한다는 단점이 있다. 

이렇게하면 응답속도가 약간 늦더라도 모든 보안제약에서 해방될 수 있다

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중

일자별 보기

1월 2008
« 12월   2월 »
 123456
78910111213
14151617181920
21222324252627
28293031  

최근 사진

%d 블로거가 이것을 좋아합니다: