CSRF
Last updated
Was this helpful?
Last updated
Was this helpful?
CSRF 공격은 서로 다른 사이트 간의 요청 변조 공격입니다.
공격이 성공하기 위한 전제 조건은, 피해자의 세션에서 자동으로 실행되도록 작성한
공격자의 악성 코드에서 타겟의 사이트에 대한 유효한 세션을 피해자가 가지고 있어야 합니다.
예를 들어서 공격자는 자신이 만든 사이트의 이미지 태그 속성에 아래와 같은 악성 코드를 삽입했습니다.
해당 자바스크립트 코드는 https://bank.com/transfer 로 접속하여
attacker_account 계정을 향해 100000원을 송금하도록 하는 코드입니다.
하지만 피해자가 https://bank.com 사이트에 대한 유효한 세션이 없거나
혹은 이용자가 아니라면 공격이 성립하지 않습니다.
Referer 헤더 검증
CSRF 토큰 사용
캡차 인증 도입
비밀번호 변경 시, 기존 비밀번호 입력 등의 2차 인증 도입
CSRF는 공격자의 링크를 클릭함에 따라 피해자 본인도 인지하지 못한 요청을 수행하는 공격으로
Referer 헤더는 자연스럽게 공격자의 링크로 설정됩니다.
이에 따라 Referer 헤더 값만 검증하더라도 간단하게 방어할 수 있지만
추가적인 보안 대책으로 송금, 패스워드 변경 등의 민감한 요청메시지에서는 1회성 토큰을 발급하여
토큰의 유효성 검증을 통해 방어할 수 있습니다.
비밀번호 변경과 같은 동작에서는 비밀번호 변경 시 기존의 비밀번호를 입력해야만 변경이 가능하거나,
캡차 인증과 같은 보안 기술을 도입하여 안전하게 처리할 수 있습니다.