1. CSRF란 무엇인가?
- 정의: CSRF는 인증된 사용자가 원치 않는 동작을 하도록 공격자가 요청을 위조하는 기법이다.
- 핵심: 브라우저가 사용자가 로그인한 사이트의 쿠키를 자동으로 전송한다는 점을 악용한다.
- 결과: 사용자는 자신도 모르게 송금, 비밀번호 변경, 게시물 작성 같은 행위를 하게 된다.
2. CSRF 공격 원리
- 사용자가 bank.com에 로그인 → 브라우저에 세션 쿠키가 저장됨.
- 공격자가 조작된 페이지(evil.com)를 열도록 유도.
- 그 안에 " https://bank.com/transfer?to=attacker&amount=1000 "같은 요청을 숨겨둠
- 브라우저는 이미지 요청처럼 보이지만, 자동으로 bank.com의 세션 쿠키를 포함시킴.
- 서버는 정상 사용자 요청으로 인식 → 공격자 계좌로 송금 처리.
포인트: 사용자가 직접 의도하지 않았는데도, 브라우저가 쿠키를 자동 포함하면서 발생
3. 방어 방법
(1) CSRF 토큰 사용
- 각 요청마다 서버가 난수 토큰을 발급하고, 클라이언트가 이를 함께 제출해야 요청을 인정.
- 공격자는 토큰을 알 수 없으므로 위조 요청 차단 가능.
<input type="hidden" name="csrf_token" value="af21x39k...">
(2) SameSite 쿠키 속성
- SameSite 속성을 Strict 또는 Lax로 설정하면, 다른 사이트에서 오는 요청에 쿠키가 전송되지 않음.
Set-Cookie: sessionid=abc123; HttpOnly; Secure; SameSite=Strict
(3) Referer / Origin 헤더 검증
- 요청 헤더에 포함된 도메인을 확인해, 올바른 출처에서 온 요청만 허용.
(4) 사용자 재인증
- 중요한 작업(비밀번호 변경, 송금 등)에는 비밀번호 재입력이나 OTP 확인을 요구.
'보안' 카테고리의 다른 글
| XSS(Cross-Site Scripting) (0) | 2025.10.28 |
|---|---|
| JWT(Json Web Token) (0) | 2025.10.28 |
| HTTPS와 SSL인증서의 역할 (0) | 2025.10.28 |
| 쿠키와 세션 (0) | 2025.10.28 |
| 730만 취업준비생 이력서·자소서 해킹에 ‘탈탈’ 털렸다 (0) | 2025.10.25 |