XSS (Cross Site Scripting)란?
XSS 는 공격자가 웹 페이지에 **악성 스크립트(JavaScript)**를 삽입하여, 사용자의 브라우저에서 실행되게하는 공격.
<공격 목표>
- 쿠키/세션 탈취
- 사용자 계정 도용
- 악성 사이트로 리디렉션
- 피싱, 키로깅 등
예시
<input value="<script>alert('XSS!')</script>">
위처럼 삽입된 스크립트는 페이지 로드 시 자동 실행됨.
방어 방법
- 출력 시 이스케이프 처리 (< → <)
- HTML/JS 분리
- CSP(Content Security Policy) 설정
- DOM 조작 시 .innerHTML 대신 .textContent 사용
CSRF (Cross Site Request Forgery)란?
CSRF는 공격자가 피해자 브라우저를 이용해, 사용자가 의도하지 않은 요청을 서버로 보내게 하는 공격.
<공격 목표>
- 사용자의 권한으로 민감한 요청 보내기
- 비밀번호 변경, 송금, 탈퇴, 게시물 등록 등
예시
<img src="https://example.com/user/delete?id=123">
사용자의 세션을 이용해 서버에 삭제 요청이 자동 전송.
방어 방법
- CSRF 토큰 사용 (요청마다 고유 토큰 검증)
- Referer/Origin 검증
- SameSite 쿠키 속성 설정 (Lax 또는 Strict)
- 중요 요청은 GET 대신 POST 사용
XSS vs CSRF 차이 비교
항목 | XSS | CSRF |
공격 대상 | 사용자 (브라우저) | 서버 (권한 있는 사용자 세션) |
실행 위치 | 클라이언트 (JS 실행) | 서버 (브라우저 요청을 위조함) |
쿠키 필요 | 필요 없음 | 필요 있음 (세션 활용) |
방어 방법 | 출력 이스케이프, CSP 등 | CSRF 토큰, SameSite 등 |
관계 | XSS로 CSRF를 강화할 수도 있음 | XSS와 함께 사용되면 더 위험해짐 |
'기록' 카테고리의 다른 글
[시큐어 코딩] 정적 분석 도구 : SonarQube 소나큐브 (2) | 2025.05.02 |
---|---|
[시큐어 코딩] 파일 업로드 취약점 (1) | 2025.05.01 |
[시큐어 코딩] SSRF(Server-Side Request Forgery) 서버사이드 요청위조 (1) | 2025.04.29 |
[시큐어 코딩]SQL Injection이란 무엇인가? (1) | 2025.04.28 |
ChatGPT 챗지피티 이용한 지브리 이미지 생성(무료가능, 모바일 가능) (6) | 2025.04.03 |