트위터 쪽글창에 뜨는 교차 사이트 스크립팅 보안 경고 막기

교차 사이트 스크립팅을 방지하기 위해 Internet Explorer가 이 페이지를 변경했습니다. 자세한 내용은 여기를 클릭하십시오.

  인터넷 탐색기(IE) 8.0 이상에서는 트위터를 비롯한 SNS와 즐겨찾기에 글 제목이나 내용을 보낼 때에 위 화면처럼 쪽글창 대신에 교차 사이트 스크립팅(사이트 간 스크립팅)을 막으려고 페이지를 바꾸었다는 경고가 종종 뜬다. 교차 사이트 스크립팅 취약점은 해커가 웹 문서에 방문자 쪽에서 실행하는 스크립트(client-side script)를 심어서 방문자의 정보를 털고 관리자 권한까지 훔치는 데에 쓰일 수 있다. 공격 스크립트에 ", ', %, <, >,  ;, (, ), &, +, - 따위의 기호들이 쓰이므로, 웹 문서에서 이들 기호를 없애거나 다른 문자로 바꾸어서 공격을 미리 막을 수 있다.

  트위터의 쪽글창에서 나오는 경고는 <textarea> 태그 안에 들어간 따옴표(', ") 때문에 나온다. 다른 기호들이 다른 문자로 바뀌어서 제 구실을 하는 공격 스크립트를 넣기 어려우므로, IE의 반응이 지나치다고 할 수도 있다.

  교차 사이트 스크립팅 경고는 인터넷 탐색기의 보안 설정을 바꾸어 뜨지 않게 할 수 있다. '차림표(Alt 글쇠) → 도구 → 인터넷 옵션 → 보안 → 사용자 지정 수준'으로 들어가서 XSS 필터를 쓰지 않게 하면 된다.

인터넷 옵선
보안 설정 - 인터넷 영역 - XSS 필터

  하지만 누리집 운영자가 모든 방문객들에게 보안 설정을 바꾸자고 할 수 없는 노릇이다. 문제가 될 만한 기호들을 다른 문자들로 바꾸어서 경고가 뜨는 원인을 없애는 쪽이 더 나을 수 있다.  이름이 str인 문자열 변수에 부호 변환을 하지 않은 쪽글이 들어 있다면, 자바스크립트와 PHP에서 다음과 같은 명령으로 따옴표 ', "를 ', "으로 바꿀 수 있다.

// JavaScript
str = str.replace(/\"/g,"&#65282;");
str = str.replace(/\'/g,"&#65287;");

// PHP
$search = array("'", '"');
$replace = array("'", """);
$str = str_replace($search, $replace, $str);


  이렇게 하고 자바스크립트의 encodeURIComponent 함수나 PHP의 urlencode, htmlspecialchars 함수 따위를 적절히 써서 부호 변환한 str 변수의 내용을 쪽글창을 여는 URL에 붙이면 된다. 큰따옴표(")와 작은따옴표(')만 바꾸면 트위터나 구글 즐겨찾기의 교차 스크립팅 경고를 없앨 수 있다. 만약 따옴표가 아닌 다른 기호 때문에 경고가 뜬다면 위와 같은 방법으로 문제를 일으키는 기호를 다른 문자로 바꾸어 주면 된다.

글 걸기 주소 : 이 글에는 글을 걸 수 없습니다.

덧글을 달아 주세요