로그인시 캐시 사용 이유, 리플레이 어택

Stormi·2022년 4월 14일
1

개발

목록 보기
9/20

OAuth 소셜로그인을 할 때, 이 카카오,네이버 회원이 우리의 서비스 회원인지 확인을 하고, 로그인시에 캐시에 발급한 랜덤 토큰값으로 저장해서 회원 정보 조회, 회원 정보 수정, 회원 삭제시에 이 유저가 맞는지 토큰값을 확인한다.

처음에 이걸 개발 할 때, 어차피 회원마다 아이디랑 비밀번호가 다를텐데 굳이 캐시로 임시적인 토큰 값을 줘야하나 싶었다

하지만, 비밀번호와 같은것은 민감한 정보이고 영구적인 정보이다.
따라서 임시적인 토큰을 발급해서 안전하게 하려고하는 것이다.

우리는 https 프로토콜로 사이트와 암호와되어서 네트워크의 중간자들이 우리 사이트와 사용자들 사이의 오가는 패킷들을 볼 수가 없다.

http는 중간자들이 오가는 패킷들을 다 열어 볼 수 있다. 만약 이때, 난수값이 아닌 패스워드로 주고 받는다고 생각하면 매우 위험하다. 따라서 영구정보인 패스워드가 아닌 임시 정보로 인증해야하니까 캐시가 필요하다.

여기서 더 나아가 임시적인 토큰을 발급하는 것이 리플레이 어택을 막기위한 보안적 조치 중에 하나라고 볼 수 있다. 리플레이 어택이란, 내가 보낸 패킷을 중간자 잡아서 그 패킷 그대로 또 재요청을 보내는 것이다. 그러면 내가 보낸 정보랑 아예 똑같기 때문에 문제가 생긴다.

만약 내가 내 주민번호를 조회하는 것을 요청했다고하자. 그럼 중간자가 나와 똑같은 요청을 보내서 요청은 두번 들어가고 중간자도 내 주민번호를 조회할 수 있는 위험한 상황이 생긴다.

이런 리플레이 어택을 막기 위해서 여러가지 조치가 있는데 헤더에 난수 값을 하나 넣어줘서 똑같은 요청에 똑같은 답이 오지 않도록 한다.

0개의 댓글