🎭
CSRF 공격 이해하기
⚠️ 중요사용자 모르게 요청을 보내는 CSRF 공격과 방어법
CSRF란?
사용자가 로그인된 상태에서, 악성 사이트가 사용자 대신 요청을 보내는 공격입니다. 예: 은행 사이트에 로그인한 상태에서 악성 링크 클릭 → 자동 송금.
❌ 나쁜 예시
<!-- ❌ 악성 사이트의 자동 폼 전송 -->
<img src="https://bank.com/transfer?to=hacker&amount=10000" />
<!-- 또는 -->
<form action="https://bank.com/transfer" method="POST">
<input type="hidden" name="to" value="hacker" />
<input type="hidden" name="amount" value="10000" />
</form>
<script>document.forms[0].submit();</script>✅ 좋은 예시
// ✅ CSRF 토큰 사용
// 서버에서 랜덤 토큰을 생성하여 폼에 포함
<input type="hidden" name="_csrf" value="{serverToken}" />
// ✅ SameSite 쿠키 설정
Set-Cookie: session=abc; SameSite=Strict; Secure; HttpOnly
// ✅ Origin 헤더 검증
if (request.headers.origin !== 'https://mysite.com') {
return new Response('Forbidden', { status: 403 });
}