← 질문 목록
#385깊이 0

CSRF 토큰은 쿠키 세션 방식에서 왜 필수인가?

인프라 · 보안

브라우저가 요청할 때마다 쿠키를 자동으로 전송하는 특성을 악용하기 때문이다.

  1. 사용자
  2. 그다음은 악성 사이트입니다. 방문한다

    악성 사이트
  3. 그다음은 사용자 브라우저입니다. 변조된 요청 코드를 보낸다

    사용자 브라우저
  4. 그다음은 대상 서버입니다. 사용자 쿠키를 얹어서 요청을 보낸다

    대상 서버

사용자가 로그인한 상태에서 해커가 만든 페이지를 열면 브라우저는 보이지 않는 요청을 보낸다. 이때 브라우저는 대상 서버의 쿠키를 알아서 실어 보낸다. 서버는 이 요청이 사용자가 직접 누른 것인지 해커가 유도한 것인지 구별하지 못한다.

방어에는 주로 CSRF 토큰을 쓴다. 서버는 세션마다 임의의 난수를 만들어 클라이언트에 넘긴다. 브라우저는 요청할 때 헤더나 바디에 이 토큰을 담아 보낸다. 악성 사이트는 이 토큰 값을 알아낼 수 없어 공격이 실패한다.

SameSite 쿠키 설정을 써서 막기도 한다. 크로스 사이트 요청일 때 쿠키 전송을 제한하는 방식이다. 하지만 구형 브라우저에서는 이 설정이 먹히지 않는다. 결국 두 방식을 함께 쓰는 편이 안전하다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

CSRF 토큰은 쿠키 세션 방식에서 왜 필수인가?