사용자 인증

·2023년 9월 21일
0

웹개발 종합

목록 보기
8/23

세션 vs 토큰

세션

세션은 서버에 생성되며, 토큰에 비해 담고있는 정보의 양이 적기 때문에 용량 또한 작다. 정보의 용량이 작다는 것은 곧 트래픽의 원활함을 의미한다. 그리고 모든 세션을 관리자 서버에서 관리하기 때문에 보안 측면에서 토큰 보다 유리하다. 토큰은 키가 한 번 탈취되면 그 뒤의 공격에 굉장히 취약하기 때문이다.

이렇듯 세션이 대부분의 면에서 토큰보다 우월함을 보이지만, 확정성이라는 큰 특성 때문에 지금에 와서는 세션보다 토큰 인증을 선호한다.

토큰

수백만 대가 넘는 호스트가 같은 사이트에 접속할 시, 세션 인증을 이용하면 젒속한 유저마다 세션파일을 생성해 서버에서 관리해야 한다. 또한 따로 세션에 관한 처리를 해주지 않을 시 버전 차이 등을 이유로 세션 불일치 문제를 겪는 어려움 또한 존재한다.

그러나 토큰 방식 인증을 사용할 경우, 별도로 서버가 인증을 처리해주지 않아도 클라이언트 측에서 정보를 저장하고 확인하기 때문에 이러한 단점에서 자유롭다.

로컬 스토리지 vs 쿠키

개발자 도구의 Application 을 보면

이런 화면을 볼 수 있을 것이다.

로컬 스토리지와 쿠키의 모습인데, 웹의 저장 공간이다. 우리는 웹에 요청 / 응답을 보낼 때 저장할 필요가 있는 정보들의 특성에 따라 로컬 스토리지에 저장하기도 하고, 쿠키에 저장하기도 한다.

쿠키

우선 쿠키는 4KB의 작은 텍스트 파일이다. 문자열만 저장할 수 있다는 단점이 있지만 커스터마이징이 쉽고 용량도 작기 때문에 주로 간단한 정보를 인증하거나 사용자의 방문 기록을 남겨 사용자 경험을 개선하는 데에 사용되기도 한다. 웹사이트에 방문했을 때 쿠키를 허용하겠냐는 팝업을 본 적이 있을텐데, 그때 허용을 누르면 정보가 쿠키에 저장된다.

다만 모든 HTTP 요청마다 데이터를 주고받아야 하는 불편함이 있다.

로컬 스토리지

로컬 스토리지는 쿠키보다 조금 더 큰 대신 HTTP 요청마다 정보를 주고받지는 않기 때문에 네트워크라는 자원을 효율적으로 사용할 수 있다는 장점이 있다. 또한 일반적인 쿠키와 달리 만료일을 설정해놓지 않으면 만료되지 않기 때문에, 더 오랜 기간 저장해야 하는 큰 데이터를 다룰 때 굉장히 유용하다.

더하여 로컬 스토리지는 문자열만 저장할 수 있다는 제한이 없어 자바 스크립트의 객체 등 다양한 형식의 데이터를 저장하고 필요할 때 쓸 수 있다.

토큰을 로컬 스토리지와 쿠키 중 어디에 저장해야 하는지는 의견이 갈리지만, 이번에는 로컬 스토리지에 저장하여 진행해보려고 한다.

profile
공부 중

0개의 댓글