개발자

로그아웃 구현 관련하여 질문이 있습니다.

2023년 11월 30일조회 218

로그아웃 기능을 구현하기 위해 검색하던 중, 헷갈리는 점이 있어 질문드립니다. 백엔드에서 DB에 저장되어있는 Refresh Token을 제거하고 프론트에서는 AccessToken이 저장되어있는 쿠키를 제거하면 되는 걸로 이해를 하고 있었는데, 어떤 글에서는 프론트에서 쿠키를 제거하면 보안에 취약하기 때문에 백엔드에서 처리를 해야한다는 글이 보이네요. 어떤 방법을 써야할까요?

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 1

프레드윰님의 프로필 사진

아니면 클라에 웹스토리지 보관하시고 보안에 민감 하다 생각하면 2차 보안인증 추가 해도되구요 예를들어 깃헙이나 구글보면 2차보안인증 참고 해보세요

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2023년 11월 30일

사용자 로그아웃을 처리하는 방법은 여러 가지가 있습니다. 어떤 방법을 사용 할 것인지는 여러 요소, 예를 들어 애플리케이션이 실행되는 환경, 보안과 관련된 요구사항, 기존에 사용하고 있는 인증 시스템 등에 따라 달라집니다. 우선 프론트엔드 측에서 로그아웃을 처리하는 방식은 말씀하신대로 쿠키나 localStorage에서 토큰을 제거하는 방식입니다. 확실히 이런 방식은 도메인 측면의 스크립팅 공격으로 부터 안전하지 않습니다. 반면 백엔드에서 로그아웃을 처리하는 방식은 보안적인 측면에서 더 우수합니다. 서버에서 클라이언트의 세션 ID를 무효화 함으로써 이를 구현할 수 있습니다. 혹은 JWT와 같은 상태가 없는 토큰 기반 시스템의 경우, Refresh Token과 Access Token 모두를 백엔드 DB에서 만료하거나 삭제함으로써 로그아웃을 구현할 수 있습니다. 결국 어떤 구현 방식을 선택할지는 애플리케이션의 특정 요구 사항에 따라 달라질 것입니다. 프론트엔드에서 로그아웃을 처리하는 방식이 더 간단하고 적용하기 쉽지만 보안 이슈를 갖고 있습니다. 반면, 백엔드에서 처리하는 방식은 보안적으로 더 우수하지만 구현이 다소 복잡할 수 있습니다. 그럼에도 불구하고, 중요한 데이터를 다루는 애플리케이션의 경우 백엔드에서 로그아웃을 처리하는 것이 일반적인 모범 사례입니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!