본문 바로가기

웹 보안

[웹 보안] XSS

728x90

XSS(Cross-Site-Scripting)이란?

악의적인 스크립트를 신뢰할 수 있는 사이트에 삽입하여 사용자의 브라우저에서 실행하게 하는 공격 기법입니다.

주로 사용자의 세션을 탈취, 웹사이트 변조, 악성 콘텐츠 리다이렉션하는 등 다양한 목적으로 사용됩니다.

대부분의 웹 해킹 공격과는 다르게 서버가 아닌 클라이언트(사용자)를 공격하는 방법입니다.

 

XSS 3가지 유형

  • 저장형(Stored)
  • 반사형(Reflected)
  • DOM기반

 

저장형(Stored) XSS

악성 스크립트가 서버에 영구적으로 저장되어 다른 사용자들이 해당 페이지를 방문할 때마다 실행됩니다.

게시판에 악성 스크립트가 포함된 글을 작성하면 그 글을 읽은 모든 사용자들이 공격에 노출됩니다.

예시: 게시판 글에 <script> 삽입 → 열람자 브라우저에서 실행

 

 

반사형(Reflected) XSS

악성 스크립트가 URL 파라미터나 폼 입력등을 통해 서버로 전송되고 서버의 응답에 그대로 반영되어 사용자의 브라우저에서 실행되는 방식입니다. 주로 피싱 공격과 결합하여 사용되며 사용자가 악성 링크를 클릭하도록 유도합니다.

예시 : http://example.com?q=<script>...</script>

 

 

DOM(Document Object Model) XSS

클라이언트 측 스크립트가 동적으로 페이지 내용을 변경할 때 발생합니다. 이 경우에는 악성 스크립트가 서버를 거치지 않고 직접 DOM을 조작하여 실행됩니다. 이 공격 유형은 탐지, 방어가 상대적으로 어려워 주목받고 있습니다.

 

 

 

대표적인 피해 사례

공격자가 사용자의 쿠키를 탈취하여 세션 하이잭킹을 할 수 있으며 이를 통해 사용자의 계정에 무단으로 접근할 수 있습니다.

웹사이트 내용 변조를 통해 가짜 로그인 폼을 삽입하거나 사용자를 피싱 사이트로 리다이렉션할 수 있습니다.

사용자의 브라우저를 원격으로 제어하여 키로깅, 화면 캡처등의 악성 행위를 수행할 수 있습니다.

 

 

 

예방 방법

1. 입력값 검증과 출력값 인코딩

사용자로부터 받은 모든 입력값은 잠재적으로 위험하다고 가정하여 입력값을 적절히 검증하고 필터링합니다.

또한 동적으로 생성되는 HTML 내용은 반드시 적절한 인코딩을 거쳐야 합니다. HTML 컨텍스트에서는 <, >, & 등 특수 문자를 해당 HTML 엔티티로 변환해야합니다.

 

2. 콘텐츠 보안 정책(CSP)

Content Security Policy를 사용하는 것도 효과적인 방법입니다. CSP는 웹 페이지에서 로드할 수 있는 리소스의 출처를 제한함으로써 XSS공격을 줄일 수 있습니다.

 

3. HttpOnly 플래스 사용

HttpOnly 플래그를 사용하여 쿠키를 보호하여 스크립트를 사용하여 사용자의 세션 하이잭킹을 방지할 수 있습니다.

 

4. 프레임워크, 템플릿 엔진

대부분의 프레임워크, 템플릿 엔진은 기본적으로 XSS 방어 기능을 내장하고 있습니다.

 

 

 

정리

공격 유형 발생 위치 특징
저장형 XSS 서버 저장 후 불특정 다수에 노출
반사형 XSS 서버 응답 즉각 반응, 주로 피싱에 이용
DOM XSS 클라이언트 자바스크립트에 의해 발생, 탐지 어려움
728x90

'웹 보안' 카테고리의 다른 글

[웹 보안] 세션 하이잭킹  (1) 2025.05.01
[웹 보안] 파일 업로드 취약점  (1) 2025.04.30
[웹 보안] CSRF  (1) 2025.04.28
[웹 보안] SQL 인젝션  (0) 2025.04.21