사이트 간 스크립팅

사이트 간 스크립팅(Cross‑Site Scripting, XSS)은 웹 애플리케이션에서 발생할 수 있는 보안 취약점 중 하나로, 공격자가 신뢰된 웹 페이지에 악의적인 스크립트 코드를 삽입하여 다른 사용자의 브라우저에서 해당 코드를 실행하도록 하는 행위를 의미한다. 이를 통해 세션 쿠키 탈취, 가짜 로그인 폼 표시, 피싱, 키 입력 가로채기 등 다양한 악성 행위를 수행할 수 있다.

정의

  • XSS는 웹 서버가 클라이언트가 입력한 데이터를 충분히 검증·정제(sanitization)하지 않고 그대로 HTML 페이지에 포함시킬 때 발생한다.
  • 삽입된 스크립트는 사용자의 브라우저에서 정상적인 웹 페이지와 동일한 권한으로 실행되므로, 해당 웹 사이트에 대한 신뢰 관계를 악용한다.

주요 유형

유형 특징 대표적 공격 기법
저장형 XSS (Stored XSS) 공격 스크립트가 서버에 영구적으로 저장되어 여러 사용자가 접근할 때 실행됨 게시판, 댓글, 프로필 등 사용자 입력을 저장하는 기능에 삽입
반사형 XSS (Reflected XSS) 공격 스크립트가 요청 파라미터 등에 포함되어 서버가 이를 그대로 반영해 응답에 포함할 때 실행됨 피싱 메일이나 악성 URL을 통해 전달
DOM 기반 XSS (DOM‑Based XSS) 클라이언트 측 자바스크립트가 DOM을 조작하는 과정에서 입력값을 검증 없이 사용함 innerHTML, document.write 등으로 동적 콘텐츠를 생성할 때

동작 원리

  1. 입력 단계: 공격자는 악성 스크립트를 포함한 데이터를 웹 애플리케이션에 전송한다.
  2. 처리 단계: 서버가 해당 데이터를 충분히 필터링하거나 이스케이프하지 않고 저장하거나 바로 반환한다.
  3. 실행 단계: 사용자가 해당 페이지를 열면 브라우저는 삽입된 스크립트를 정상적인 자바스크립트로 인식하고 실행한다.
  4. 악용 단계: 실행된 스크립트는 쿠키, 로컬 스토리지 등에 접근하거나, 원격 서버에 데이터를 전송하는 등 공격 목적에 맞는 행위를 수행한다.

방어·대처 방법

  • 입력 검증 및 정제: 서버 측에서 사용자 입력을 화이트리스트 방식으로 허용하고, HTML 특수 문자를 엔티티(<, >, " 등)로 변환한다.
  • 출력 인코딩: HTML, JavaScript, CSS, URL 등 각 컨텍스트에 맞는 인코딩을 적용한다.
  • Content Security Policy (CSP): 브라우저에게 허용된 스크립트 소스를 제한하도록 정책을 설정한다.
  • HTTPOnly 쿠키 설정: 쿠키에 HttpOnly 속성을 지정해 자바스크립트에서 접근하지 못하도록 한다.
  • 보안 프레임워크 활용: OWASP ESAPI, Django, Ruby on Rails 등에서 제공하는 XSS 방지 기능을 사용한다.
  • 정기적인 보안 점검: 동적 분석(펜테스트) 및 정적 분석 도구를 통한 취약점 검사를 수행한다.

역사 및 현황

  • 1999년 마이크로소프트가 ‘Microsoft Security Advisory’에서 XSS를 처음 공식적으로 명명한 이후, 2000년대 초반 웹 2.0 서비스가 확산되면서 XSS는 웹 애플리케이션 보안 분야에서 가장 흔한 취약점 중 하나가 되었다.
  • OWASP Top 10(2021)에서도 XSS는 “A03:2021 – Injection” 카테고리와 별도 “A07:2021 – Identification and Authentication Failures” 이하 항목에 포함되어 지속적으로 강조되고 있다.
  • 현재도 최신 프레임워크와 라이브러리가 XSS 방어 메커니즘을 내장하고 있지만, 복잡한 클라이언트‑사이드 로직과 프레임워크 간 상호작용으로 인해 새로운 변종(예: Polyglot XSS, Mutation XSS)이 등장하고 있다.

관련 용어

  • CSRF (Cross‑Site Request Forgery): 사용자의 인증된 세션을 악용해 임의의 요청을 전송하는 공격. XSS와는 목적과 메커니즘이 다르지만 종종 함께 언급된다.
  • HTML 인젝션: HTML 구조 자체를 변조하는 공격으로, XSS와 겹치는 부분이 있다.
  • 스크립트 인젝션: 서버‑사이드 스크립트(예: PHP, ASP) 삽입을 목표로 하는 공격으로, XSS와 구분된다.

참고 문헌

  1. OWASP, Cross‑Site Scripting (XSS), https://owasp.org/www-community/attacks/xss (2024년 3월 접속).
  2. W3C, HTML5 Security Checklist, W3C Recommendation, 2023.
  3. 김성현 외, 웹 보안 실전 가이드, 한빛미디어, 2022.

(본 내용은 현재(2026년 4월)까지 공개된 신뢰할 수 있는 자료에 기반하여 작성되었습니다.)

둘러보기

더 찾아볼 만한 주제