1. 퀴즈 (단답형)
- 세션 방식과 JWT 방식의 회원 인증 기본 동작 방식의 유사점은 무엇인가요?
- 세션 방식과 JWT 방식에서 “입장권”에 담기는 주요 정보의 차이점은 무엇인가요?
- JWT 방식의 장점 중 “스테이트리스”하다는 것은 무엇을 의미하며, 어떤 이점을 가지나요?
- JWT의 구조는 크게 세 부분으로 나뉘는데, 짧은 문자로 인코딩되기 전에 입력하는 기본 설정값과 입장권에 기록할 데이터 부분을 제외한 나머지 한 부분은 무엇에 사용되나요?
- 악의적인 사용자가 JWT의 알고리즘 부분을 ‘none’으로 설정하여 보내는 공격은 어떤 경우에 성공할 수 있나요?
- JWT에 민감한 사용자 정보를 그대로 넣으면 안 되는 이유는 무엇인가요?
- JWT 구현 시 시크릿 키를 대충 설정하면 어떤 보안 문제가 발생할 수 있나요?
- 탈취된 JWT 입장권의 사용을 막기 어려운 JWT 방식의 구조적 특징은 무엇인가요?
- 탈취된 JWT의 사용을 막기 위한 해결 방안 중, JWT의 장점을 상쇄시킬 수 있는 방식은 무엇인가요?
- 서비스 규모와 요구사항에 따라 세션 방식과 JWT 방식 중 어떤 것을 선택하는 것이 더 적합할 수 있나요?
2. 퀴즈 정답
- 두 방식 모두 사용자가 로그인하면 서버가 사용자에게 “입장권(토큰 혹은 세션 ID)”을 발급하고, 이후 사용자가 사이트 이용 시 해당 입장권을 제시하면 서버가 유효성을 확인하여 접근을 허용하는 흐름이 동일합니다.
- 세션 방식의 입장권(Session ID)에는 주로 단순 식별 정보(세션 번호)만 담기는 반면, JWT 방식의 입장권(JWT)에는 사용자 이메일·이름·발급일·유효 기간 등 비교적 많은 정보(클레임)가 포함됩니다.
- JWT가 “스테이트리스”하다는 것은 서버가 클라이언트의 상태 정보를 별도로 저장하지 않는다는 의미입니다. 이를 통해 서버 부하를 줄이고, 여러 대의 서버 간 상태 동기화 없이도 확장성을 얻을 수 있습니다.
- 헤더(Header)와 페이로드(Payload)를 제외한 나머지 세 번째 부분은 “서명(Signature)”을 생성하는 데 사용됩니다. 서명은 시크릿 키를 이용해 헤더와 페이로드가 위변조되지 않았음을 검증하는 역할을 수행합니다.
- 서버가 JWT의 ‘none’ 알고리즘을 제대로 검증하지 않고 “서명 없음” 상태를 유효한 토큰으로 취급하는 경우, 악의적 사용자가 임의로 생성한 무서명 토큰으로도 인증에 성공할 수 있습니다.
- JWT 페이로드는 Base64 인코딩되어 누구나 디코딩할 수 있으므로, 민감한 사용자 정보를 그대로 넣으면 외부에 노출될 위험이 있습니다.