보안 위협

XSS

포스팅 뷰40

XSS(크로스사이트 스크립팅)란 무엇일까요?

한눈에 보는 요약
  • 정의 — 웹페이지에 악성 스크립트를 심어 방문자의 브라우저에서 실행시키는 웹 공격입니다.
  • 핵심 위험 — 쿠키·세션 탈취로 로그인 상태를 도용하거나 가짜 화면으로 정보를 빼갈 수 있습니다.
  • 대응 — 입력값 이스케이프, 콘텐츠 보안 정책(CSP), HttpOnly 쿠키 설정이 핵심입니다.

XSS란 웹사이트에 악성 스크립트를 주입해 다른 사용자의 브라우저에서 실행되게 하는 코드 인젝션 공격을 말합니다.

XSS란?

XSS(Cross-Site Scripting, 크로스사이트 스크립팅)는 게시판·댓글창처럼 사용자 입력을 그대로 화면에 표시하는 웹페이지에 악성 스크립트를 끼워 넣어, 그 페이지를 보는 다른 사용자의 브라우저에서 스크립트가 실행되게 만드는 공격입니다.

서버가 아니라 다른 사용자의 브라우저가 표적이라는 점이 특징입니다. 공격이 성공하면 로그인 쿠키·세션 탈취, 가짜 입력창으로 개인정보 유도, 화면 변조까지 가능합니다. OWASP Top 10에서도 인젝션 계열 취약점 중 가장 빈번하게 발견되는 유형으로 꼽힙니다.OWASP

댓글창에 넣은 악성 스크립트가 방문자의 웹페이지(브라우저)에서 실행되어 쿠키 탈취와 화면 조작으로 이어지는 모습 댓글 입력창 <script>쿠키탈취()</script> 악성 스크립트 입력 웹페이지 (방문자 브라우저) 스크립트 그대로 실행 쿠키·세션 탈취 가짜 화면 표시 입력창의 악성 스크립트가 브라우저에서 실행
▲ 댓글창에 심은 악성 스크립트가 방문자 브라우저에서 실행되는 XSS

XSS의 동작 방식

XSS는 입력값을 제대로 걸러내지 않는 웹페이지를 노립니다.

  1. 취약 지점 탐색 — 입력값 필터링이 허술한 게시판·검색창을 찾습니다.
  2. 악성 스크립트 삽입 — 입력란에 <script> 같은 스크립트 코드를 넣습니다.
  3. 브라우저에서 실행 — 다른 방문자가 페이지를 열면 스크립트가 자동 실행됩니다.
  4. 정보 탈취·화면 조작 — 쿠키·세션 탈취, 가짜 화면 표시가 일어납니다.
취약 지점 탐색, 악성 스크립트 삽입, 브라우저에서 실행, 정보 탈취의 네 단계 XSS는 이렇게 진행됩니다 1 취약 지점 탐색 필터링 허술한 게시판·검색창 물색 2 악성 스크립트 삽입 script 태그 등 코드 입력 3 브라우저에서 실행 방문자가 페이지 열면 스크립트 자동 실행 4 정보 탈취·화면 조작 쿠키·세션 탈취· 가짜 화면 표시
▲ 취약 지점 탐색 → 악성 스크립트 삽입 → 브라우저에서 실행 → 정보 탈취·화면 조작

XSS의 3가지 유형

  • 저장형(Stored) XSS — 악성 스크립트가 게시글·댓글과 함께 서버(DB)에 저장돼, 그 글을 보는 모든 방문자에게 실행됩니다. 피해 범위가 가장 넓습니다.
  • 반사형(Reflected) XSS — 스크립트가 URL이나 검색어에 담겨 전달되며, 피해자가 조작된 링크를 클릭해야 실행됩니다.
  • DOM 기반(DOM-based) XSS — 서버를 거치지 않고, 브라우저의 자바스크립트가 입력값을 잘못 처리해 클라이언트 쪽에서 바로 실행됩니다.

실제 피해 사례

2005년 마이스페이스(MySpace)의 '새미 웜(Samy Worm)' 사건이 대표적입니다. 한 사용자가 자신의 프로필에 저장형 XSS 스크립트를 심어두었는데, 방문자가 그 프로필을 보기만 해도 스크립트가 자동으로 실행돼 방문자의 프로필에도 같은 스크립트가 퍼졌습니다. 이렇게 자가 전파된 웜은 마이스페이스가 조치를 취하기 전까지 약 20시간 만에 100만 명이 넘는 친구 요청을 만들어냈습니다.PurpleSec 입력값을 걸러내지 않은 웹페이지 하나가 자가 전파형 공격의 통로가 될 수 있음을 보여준 사례입니다.

OWASP Top 10:2025에서도 XSS는 인젝션 항목(A05) 안에서 3만 건이 넘는 취약점 사례(CVE)가 보고돼, 발견 빈도가 가장 높은 웹 취약점 유형으로 분류됩니다.OWASP

기술형 보안 위협 비교

XSS는 시스템의 빈틈을 노리는 기술형 공격 중 하나입니다. 대표 유형을 비교하면 다음과 같습니다.

구분 XSS SQL 인젝션 CSRF 웹 셸
공격 지점 방문자의 브라우저 웹 입력창·DB 로그인된 세션 웹 서버
수법 악성 스크립트 삽입·실행 악성 SQL 주입 사용자 모르게 요청 위조·전송 악성 스크립트로 원격 제어
핵심 위험 쿠키·세션 탈취, 화면 조작 DB 정보 유출·조작 피해자 권한으로 의도치 않은 행동 서버 장악
주요 방어 입력값 이스케이프, CSP 파라미터화 쿼리 CSRF 토큰, SameSite 쿠키 업로드 검증·권한 제한

XSS 예방·대응 방안

개발·운영자

  • 입력값 이스케이프·인코딩 — 사용자 입력을 화면에 표시할 때 HTML 태그로 해석되지 않도록 변환합니다.
  • 콘텐츠 보안 정책(CSP) — 허용된 출처의 스크립트만 실행되도록 브라우저 정책을 설정합니다.
  • HttpOnly·Secure 쿠키 — 스크립트가 쿠키 값에 직접 접근하지 못하도록 속성을 지정합니다.

이용자

  • 의심스러운 링크 주의 — 출처 불명 링크·단축 URL은 클릭 전 도메인을 확인합니다.
  • 브라우저·백신 최신화 — 알려진 악성 스크립트 실행 시도를 탐지·차단하는 데 도움이 됩니다.

오피스키퍼는 내부 정보 유출 방지(DLP)와 PC·문서 사용 이력 관리로, XSS로 탈취된 정보가 외부로 빠져나가는 경로까지 함께 통제하는 데 도움을 줍니다.

자주 묻는 질문

Q. XSS와 SQL 인젝션은 어떻게 다른가요?

A. 둘 다 악성 코드를 입력값에 끼워 넣는 인젝션 공격이지만, SQL 인젝션은 서버의 데이터베이스를 노리고 XSS는 그 페이지를 보는 다른 사용자의 브라우저를 노립니다.

Q. 저장형·반사형·DOM 기반 XSS 중 가장 위험한 것은?

A. 저장형 XSS가 일반적으로 가장 위험합니다. 피해자가 특별한 링크를 클릭할 필요 없이, 악성 스크립트가 저장된 게시글을 열어보는 모든 사람에게 자동으로 전파되기 때문입니다.

Q. 일반 이용자도 XSS 피해를 입을 수 있나요?

A. 네. XSS는 서버가 아니라 이용자의 브라우저에서 실행되는 공격이라, 취약한 사이트를 방문하거나 조작된 링크를 클릭하는 것만으로 로그인 정보가 탈취될 수 있습니다.

Q. CSP(콘텐츠 보안 정책)가 무엇인가요?

A. 브라우저에게 "이 출처의 스크립트만 실행하라"고 지정하는 정책입니다. 공격자가 스크립트를 삽입해도 허용되지 않은 출처면 실행되지 않아, XSS의 실질적 피해를 크게 줄여줍니다.

Q. WAF만으로 XSS를 막을 수 있나요?

A. 웹 방화벽은 알려진 공격 패턴을 걸러 주지만 새로운 우회 기법에는 취약할 수 있습니다. 입력값 이스케이프·CSP 같은 근본적인 코드 대응과 함께 다층으로 운영해야 합니다.

기업 내부 정보 유출, 오피스키퍼로 막으세요.

제품소개서 신청하기