본문 바로가기

IT/보안

크로스 사이트 스크립트(XSS, Cross-Site Scripting)

반응형

크로스 사이트 스크립트(XSS)웹 애플리케이션에서 사용자가 입력한 데이터를 적절히 검증하지 않고 출력할 때 발생하는 보안 취약점입니다. 공격자가 악의적인 스크립트를 삽입하여 다른 사용자의 브라우저에서 실행되도록 만들 수 있습니다.


XSS 유형

XSS는 다음과 같이 세 가지 주요 유형으로 분류됩니다.

1. 반사형 XSS
  • 공격자가 조작된 URL을 피해자가 클릭하도록 유도하여 악성 스크립트를 실행하는 방식
  • 예제 : 검색 페이지에서 입력값을 필터링하지 않고 그대로 출력하는 경우
  • 방어 방법 : 입력 값 검증(Validation), 출력 시 이스케이프(Escape) 처리

http://example.com/search?q=<script>alert('XSS');</script>

2. 저장형 XSS
  • 악의적인 스크립트가 데이터베이스 등에 저장되어 피해자가 페이지를 방문할 때 자동으로 실행되는 방식
  • 예제 : 게시판, 댓글 기능에서 사용자 입력을 필터링하지 않는 경우
  • 방어 방법 : 서버 측에서 입력값 필터링, CSP(Content Security Policy) 적용

<script>alert('XSS');</script>


3. DOM 기반 XSS (DOM-based XSS)
  • 클라이언트 측에서 JavaScript를 조작하여 악성 스크립트를 실행하는 방식
  • 예제 : document.write(), innerHTML 등을 사용하여 동적으로 HTML을 삽입할 때 검증 없이 실행되는 경우
  • 방어 방법 : JavaScript에서 입력 값을 안전하게 처리, textContent 사용

javascript

var search = document.location.hash;
document.write(search);

URL 호출: http://example.com#<script>alert('XSS')</script>


XSS 공격 방어 방법


1. 입력값 검증 (Input Validation)
  • 서버 및 클라이언트에서 입력값을 검증하여 허용된 데이터만 처리하도록 제한
  • 예제 : <script> 태그나 특수 문자를 필터링

2. 출력값 이스케이프 
  • HTML, JavaScript, URL, CSS 등의 컨텍스트에 맞는 이스케이프 처리
  • 예제 : < → &lt;, > → &gt;, " → &quot;

3. 콘텐츠 보안 정책(CSP, Content Security Policy) 적용
  • 신뢰할 수 있는 출처에서만 스크립트를 실행하도록 제한
  • 예제 : Content-Security-Policy: default-src 'self'; script-src 'self' 'trusted.com'

4. HttpOnly 및 Secure 속성 설정
  • HttpOnly : JavaScript에서 쿠키 접근 방지
  • Secure : HTTPS에서만 쿠키 전송

5. 라이브러리 및 프레임워크 보안 기능 활용
  • React, Angular 등의 프레임워크는 기본적으로 XSS 방어 기능을 제공
  • 예제 : React의 dangerouslySetInnerHTML 사용 지양


XSS는 웹 애플리케이션의 보안 취약점 중 하나로, 적절한 입력값 검증과 출력값 이스케이프 처리 등을 통해 방어할 수 있습니다. 또한 CSP, HttpOnly 속성 등의 보안 설정을 적용하여 추가적인 보호를 강화하는 것이 중요합니다.

반응형