웹사이트에 악성 스크립트를 삽입하고, 이를 방문한 사용자의 브라우저에서 실행되도록 유도하는 공격 기법입니다.
공격 흐름
- 입력 필드에 악성 스크립트 삽입
- 예: 게시판, 댓글, 검색창 등
- 웹사이트가 이를 검증 없이 저장/출력
- DB에 저장하거나 HTML로 렌더링
- 다른 사용자가 웹페이지 접근
- 스크립트가 실행되어 피해 발생:
- 쿠키/세션 탈취
- 악성 사이트로 리다이렉트
- 악성코드 자동 다운로드 등
- 스크립트가 실행되어 피해 발생:
방어 기법
| 방법 | 설명 |
| 입력값 검증 | 스크립트 해석이 가능한 문자 필터링 허용된 형식만 수용 (화이트리스트 기반) |
| 출력값 인코딩 | <, >, ', " 등을 HTML 엔티티로 변환 ex: <script> → <script> |
| 콘텐츠 보안 정책 (CSP) | 브라우저가 외부 스크립트 로드를 제한 HTTP 헤더: Content-Security-Policy |
| HttpOnly 쿠키 설정 | JavaScript로 쿠키 접근 차단 Set-Cookie: key=value; HttpOnly 설정 |
예시 (공격 코드)
<script>alert('XSS 공격')</script>
위 코드가 댓글 등에 삽입되어 필터링 없이 렌더링되면 사용자 브라우저에서 스크립트가 실행됨.
피해 예시
- document.cookie로 쿠키 탈취
- location.href로 피싱사이트 유도
- XMLHttpRequest로 백엔드 API 호출
| 항목 | 내용 |
| 위협 | 클라이언트 브라우저에서 스크립트가 실행되어 보안정보 탈취 |
| 주요 피해 | 쿠키/세션 탈취, 악성사이트 유도, 브라우저 조작 |
| 예방 방법 | 입력 검증, 출력 인코딩, CSP 적용, HttpOnly 쿠키 |
'ZeroBase > CS' 카테고리의 다른 글
| 운영체제와 컴퓨터 시스텀의 구조 (2) | 2025.08.10 |
|---|---|
| CSRF(Cross-Site Request Forgery) (3) | 2025.08.08 |
| HTTP 멱등성 (1) | 2025.08.06 |
| 네이글 알고리즘 (0) | 2025.08.05 |
| CORS (1) | 2025.08.04 |