ie7 utf-8 bug 한글주소 요청 버그

IE7 은 UTF8 주소 요청에 대한 문제점을 가지고 있다.
한국의 대다수 웹사이트는 EUCKR을 사용하고 있으며, (사실 UTF8 로 전향하여야 한다)
클릭하거나 입력하는 주소를 IE6 은 기본설정상 UTF8 로 항상 전송하게 되어있다.

IE7 또한 마찬가지 기본설정을 가지고 탄생하였으나 여기에는 치명적인 버그가 있다.
IE6 과 IE7 의 동작구조를 살펴보자!

IE6
1. 사용자  http://웹사이트/한글테스트.html 입력시
2. 서버에 해당 URI 를 요청한다. (UTF-8 로)
3. 서버에 해당 URI 가 없거나 MOD_URL 등의 모듈을 통해 컨버전을 제공하고 있을 경우 (이경우의 수를 MS는 감안하지 않았음)
4. 항상 UTF-8로 보냄이 설정되어있어도 MOD_URL이 REDIRECT해주는 EUCKR의 주소를 허용하고 이를 요청한다.

IE7
1. 사용자  http://웹사이트/한글테스트.html 입력시
2. 서버에 해당 URI 를 요청한다. (UTF-8 로)
3. 서버에 해당 URI 가 없거나 MOD_URL 등의 모듈을 통해 컨버전을 제공하고 있을 경우 (이경우의 수를 MS는 감안하지 않았음), EUCKR로 변환된 주소를 리다이렉트로 반환한다.
4. REDIRECT 되어온 주소가 EUCKR일 경우 이를 다시 UTF-8 로 바꾸고 2단계로 돌아간다. (무한반복)

1번의 요청시 위의 2~4번 무한반복이 약 2천번가량 진행된 후 종료되는것을 확인하였다.
이는 심각하며, 크리티컬한 버그이며, 브라우저의 사용자를 범법자이며, 불량사용자 (DDOS공격으로 간주) 만드는 엄청난 브라우저라는 사실을 잊지말자.

해결방법

현재 SLRCLUB.COM 에는 위와관련한 패치가 적용되어있다.

MODURL의 동작구조는 다음과 같다.

1. 요청받은 URI를 서버가 처리하고 딜리버리를 한다.
2. 만약 실패하였을 경우 -> MODURL 이 동작한다.   (mod_spell 타입의 후킹으로 후처리 기반임)
    1] 캐릭터셋을 디텍팅하고 컨버전이 먹혔을 경우
    2] 해당 URI 로 리다이렉셔닝 한다.  (여기서 IE7은 문제발생)
--> 현실적으로 브라우저가 정상적일 경우 이방법은 가장 효과적인 방법일지도 모른다.
왜냐하면 매 요청마다 변환작업을 하지 않아도 되므로 서버부하가 많이 줄어든다.

패치한 방법은 다음과같다.

MODURL 의 Request 한 주소를
  ap_hook_post_read_request 로 후킹을 변경하고 APR_HOOK_FIRST로 콜을 한다.
따라서 요청이 도달하는 순간 가장 먼저 이 모듈이 가로채어 주소를 변경한다
request_rec->unparsed_uri 의 주소를 재작성하여 서버로 전달한다.

문제점 : 단방향적인것밖에 지원되지 않는다. 따라 서버에 utf8 파일이 혼합되어있을 경우 이를 감지하지 못한다. 무조건 euckr 파일만 찾게된다. 이에대한 롤백을 구현하려면 모듈이 후킹해야하는 부분이 너무 많아진다.

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

Posted by LeCieL

2006/11/16 22:47 2006/11/16 22:47
, , , ,
Response
2 Trackbacks , No Comment
RSS :
http://cl.dgtalx.net/rss/response/50

Trackback URL : http://cl.dgtalx.net/trackback/50

Trackbacks List

  1. IE7 과 mod_url 문제 수정

    Tracked from Go! Bbuwoo 2007/05/28 02:18 Delete

    IE7 에서 mod_url 이 설정되어 있는 서버로 한글 주소를 전송할 경우 encoding 이 맞으면 (즉, mod_url 이 작동할 일이 없으면..) 문제가 없지만, 맞지 않을 경우에는 무한 루프에 빠지게 되는 문제가 있습니다. 즉 예를 들어서, 다음의 조건에 해당될 경우 입니다. IE7 이 URL 의 utf8로 전송한다. (기본값임) 서버측의 mod_url 이 다음과 같이 설정이 되어 있다. CheckURL on ServerEncoding EU..

  2. IE7 과 mod_url 문제 수정 2번째

    Tracked from Go! Bbuwoo 2007/05/31 06:42 Delete

    며칠전에 IE7 과 mod_url 문제 수정 이라는 글에서 IE7 에서 한글 URI 를 사용할 경우 mod_url 과의 충돌로 무한 루프가 발생하는 문제를 수정하여 포스팅을 했었습니다. 그 과정에서, 301 로 재접속을 시킬때, IE7 의 재변환을 막기 위하여 url encoding 을 하여 문제를 해결했는데, 그 해결을 위해 사용했던 코드가 php raw_url_encode 함수를 수정하여 처리를 했습니다. 그런데, PHP license 와 Apa..

« Previous : 1 : ... 137 : 138 : 139 : 140 : 141 : 142 : 143 : 144 : 145 : ... 189 : Next »

Archives

Calendar

«   2012/02   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29