인프런 커뮤니티 질문&답변

inf009님의 프로필 이미지
inf009

작성한 질문수

스프링 시큐리티

13) 사이트 간 요청 위조 - CSRF, CsrfFilter

CSRF 토큰 질문

작성

·

480

0

안녕하세요. 강사님

아래 CSRF 질문과 비슷한 내용인데 잘 이해가 가지 않아서 질문드립니다.

이미 사용자가 로그인되어 있는 인증된 상태라고 한다는 가정하에

사용자는 이미 로그인이 되어 있기 때문에 세션 쿠키가 만들어진 상태이고 공격자가 심어 놓은 URL 의 액션을 실행한다고 해도 사용자의 서비스 시스템은 정상적인 사용자의 액션이라고 판단한다고 하는 부분은 이해가 됩니다.

질문입니다.

여기서도 사용자가 이미 로그인 되어 있을 때 csrf 토큰 값도 만들어져 있어서 가져올 수 있는 것 아닌가요..?

여기 답변이 잘 이해가 안갑니다.

사용자의 서비스 시스템이 해당 액션에 대해 csrf 토큰값을 요구할 경우 공격자의 사이트에는 사용자 서비스에서 사용자에게 발행한 csrf 토큰값을 알수가 없기 때문에 접근이 거부 됩니다.

답변 1

0

inf009님의 프로필 이미지
inf009
질문자

강사님이 남겨주신 답변을 계속보다가 생각해봤습니다.

사용자가 이미 인증을 받고 서버가 응답헤더에 csrf 쿠키를 담아서 사용자에게 보냈다고 하더라도 이후에 요청할 때는 csrf 토큰을 요청할텐데

공격자가 심어놓은 공격용 HTML 페이지에 이미지 태그를 클릭하거나 src에 심어놓은 URL의 액션을 실행하더라도 이때에는 토큰값을 알수가 없기 때문인거군요..

맞을까요..?

정수원님의 프로필 이미지
정수원
지식공유자

네 맞습니다.

공격자의 사이트에는 사용자가 서버로부터 발급받은 csrf 토큰값을 알 수 없습니다.

만약 아래와 같은 코드가 공격자의 사이트에 구현이 되어 있습니다.

<form action="http://usershop.com/api/content" method="post">
    <input type="hidden" name="address" value="attacker address value" />
    <input type="submit" value="Click Me"/>
</form>

사용자가 위 사이트에 접속해서 폼을 실행한다 하더라도 서버가 사용자에게 발급한 csrf 값 자체가 없기 때문에 실제 사용자의 서비스에서는 요청을 거부하게 된다는 의미입니다.

inf009 님께서 이해하신 내용 그대로입니다.

 

inf009님의 프로필 이미지
inf009

작성한 질문수

질문하기