크로스 사이트 스크립팅(XSS)은 웹 애플리케이션에서 발생하는 보안 취약점으로, 공격자가 악성 스크립트를 삽입하여 다른 사용자가 이를 실행하도록 하는 공격 방식입니다. XSS는 크게 두 가지 유형으로 나뉩니다: 저장형 XSS와 반사형 XSS.
저장형 XSS는 공격자가 삽입한 악성 코드가 서버에 영구적으로 저장되는 경우를 말합니다. 예를 들어, 데이터베이스, 메시지 포럼, 방문자 로그 등에 악성 스크립트를 삽입하면, 해당 데이터를 읽는 모든 사용자가 이 스크립트를 실행하게 됩니다.
<script>alert('XSS');</script>와 같은 악성 코드를 삽입합니다.반사형 XSS는 공격자가 제공한 악성 입력이 서버에 저장되지 않고, 즉각적으로 응답에 반영되는 경우를 말합니다. 주로 URL에 포함된 쿼리 매개변수를 통해 이루어집니다.
http://example.com/search?q=검색어일 경우, 공격자는 다음과 같은 URL을 만들 수 있습니다:http://example.com/search?q=<script>alert('XSS');</script>GET /search?q=<script>alert('XSS');</script>. 서버는 쿼리 매개변수 q의 값을 포함한 페이지를 생성하여 응답합니다.<html>
<body>
<h1>검색 결과</h1>
<div>검색어: <script>alert('XSS');</script></div>
</body>
</html><script>alert('XSS');</script> 스크립트를 실행합니다.XSS 공격을 방지하기 위해서는 다음과 같은 보안 조치가 필요합니다:
Content Security Policy(CSP)와 같은 보안 헤더를 설정하여 브라우저가 허용된 소스에서만 스크립트를 실행하도록 제한할 수 있습니다.저장형 XSS와 반사형 XSS는 모두 심각한 보안 위협을 초래할 수 있으므로, 웹 애플리케이션 개발 시에는 이러한 보안 취약점을 방지하기 위한 철저한 대책이 필요합니다.