개발자
로그아웃 기능을 구현하기 위해 검색하던 중, 헷갈리는 점이 있어 질문드립니다. 백엔드에서 DB에 저장되어있는 Refresh Token을 제거하고 프론트에서는 AccessToken이 저장되어있는 쿠키를 제거하면 되는 걸로 이해를 하고 있었는데, 어떤 글에서는 프론트에서 쿠키를 제거하면 보안에 취약하기 때문에 백엔드에서 처리를 해야한다는 글이 보이네요. 어떤 방법을 써야할까요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2023년 11월 30일
사용자 로그아웃을 처리하는 방법은 여러 가지가 있습니다. 어떤 방법을 사용 할 것인지는 여러 요소, 예를 들어 애플리케이션이 실행되는 환경, 보안과 관련된 요구사항, 기존에 사용하고 있는 인증 시스템 등에 따라 달라집니다. 우선 프론트엔드 측에서 로그아웃을 처리하는 방식은 말씀하신대로 쿠키나 localStorage에서 토큰을 제거하는 방식입니다. 확실히 이런 방식은 도메인 측면의 스크립팅 공격으로 부터 안전하지 않습니다. 반면 백엔드에서 로그아웃을 처리하는 방식은 보안적인 측면에서 더 우수합니다. 서버에서 클라이언트의 세션 ID를 무효화 함으로써 이를 구현할 수 있습니다. 혹은 JWT와 같은 상태가 없는 토큰 기반 시스템의 경우, Refresh Token과 Access Token 모두를 백엔드 DB에서 만료하거나 삭제함으로써 로그아웃을 구현할 수 있습니다. 결국 어떤 구현 방식을 선택할지는 애플리케이션의 특정 요구 사항에 따라 달라질 것입니다. 프론트엔드에서 로그아웃을 처리하는 방식이 더 간단하고 적용하기 쉽지만 보안 이슈를 갖고 있습니다. 반면, 백엔드에서 처리하는 방식은 보안적으로 더 우수하지만 구현이 다소 복잡할 수 있습니다. 그럼에도 불구하고, 중요한 데이터를 다루는 애플리케이션의 경우 백엔드에서 로그아웃을 처리하는 것이 일반적인 모범 사례입니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!