웹 애플리케이션을 만들다 보면 사용자의 로그인 상태를 유지하거나, 다크모드 같은 사용자 설정을 저장하는 등 다양한 상황에서 클라이언트 저장소를 활용하게 된다.
이 때, 자주 쓰이는 세 가지가 바로 localStorage, sessionStorage, cookie이다.
: 브라우저에 영구적으로 데이터를 저장할 수 있는 저장소
// 저장
localStorage.setItem('token', 'abc123');
// 가져오기
const token = localStorage.getItem('token');
// 삭제
localStorage.removeItem('token');
sessionStorage는 localStorage와 비슷하게 동작하지만, 중요한 차이점이 하나 있다.
: 브라우저와 서버가 서로 정보를 주고받기 위해 사용되는 저장 방식
상황에 따라 저장소를 적절하게 선택하는 것이 중요한데,
자동 로그인 기능처럼 브라우저를 껐다 켜도 유지되어야 하는 정보는 localStorage가 적합하다.
하지만, 중요한 정보는 저장하면 안된다. 자바스크립트를 통해 누구나 접근할 수 있기 때문.
만약 탭을 닫으면 자동으로 로그아웃되도록 하고 싶다면 sessionStorage가 적절하다.
공용 컴퓨터에서 로그인한 뒤 실수로 창을 닫지 않았을 때, 자동으로 로그아웃되게 하려면 이 방식이 안전
반대로 보안이 중요한 refreshToken 같은 정보는 절대 localStorage나 sessionStorage에 저장하지 말고 쿠키에 저장하는 것이 좋다.
특히 HttpOnly 속성을 적용하면 자바스크립트로 접근할 수 없게 되어 보안성이 높아짐