크로스 사이트 스크립트(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 등의 컨텍스트에 맞는 이스케이프 처리
• 예제 : < → <, > → >, " → "
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 속성 등의 보안 설정을 적용하여 추가적인 보호를 강화하는 것이 중요합니다.
'IT > 보안' 카테고리의 다른 글
인포스틸러(InfoStealer) 개념과 대응방안 (0) | 2025.02.23 |
---|---|
블록체인 기술 관련 기업들의 활용 사례 (3) | 2025.02.23 |
CAPTCHA 정의 및 개요 (0) | 2025.02.22 |
제로 트러스트 보안(Zero Trust Security) (1) | 2025.02.22 |
ISA/IEC 62443 (1) | 2025.02.22 |