1. 퀴즈 (단답형)

  1. 세션 방식과 JWT 방식의 회원 인증 기본 동작 방식의 유사점은 무엇인가요?
  2. 세션 방식과 JWT 방식에서 “입장권”에 담기는 주요 정보의 차이점은 무엇인가요?
  3. JWT 방식의 장점 중 “스테이트리스”하다는 것은 무엇을 의미하며, 어떤 이점을 가지나요?
  4. JWT의 구조는 크게 세 부분으로 나뉘는데, 짧은 문자로 인코딩되기 전에 입력하는 기본 설정값과 입장권에 기록할 데이터 부분을 제외한 나머지 한 부분은 무엇에 사용되나요?
  5. 악의적인 사용자가 JWT의 알고리즘 부분을 ‘none’으로 설정하여 보내는 공격은 어떤 경우에 성공할 수 있나요?
  6. JWT에 민감한 사용자 정보를 그대로 넣으면 안 되는 이유는 무엇인가요?
  7. JWT 구현 시 시크릿 키를 대충 설정하면 어떤 보안 문제가 발생할 수 있나요?
  8. 탈취된 JWT 입장권의 사용을 막기 어려운 JWT 방식의 구조적 특징은 무엇인가요?
  9. 탈취된 JWT의 사용을 막기 위한 해결 방안 중, JWT의 장점을 상쇄시킬 수 있는 방식은 무엇인가요?
  10. 서비스 규모와 요구사항에 따라 세션 방식과 JWT 방식 중 어떤 것을 선택하는 것이 더 적합할 수 있나요?

2. 퀴즈 정답

  1. 두 방식 모두 사용자가 로그인하면 서버가 사용자에게 “입장권(토큰 혹은 세션 ID)”을 발급하고, 이후 사용자가 사이트 이용 시 해당 입장권을 제시하면 서버가 유효성을 확인하여 접근을 허용하는 흐름이 동일합니다.
  2. 세션 방식의 입장권(Session ID)에는 주로 단순 식별 정보(세션 번호)만 담기는 반면, JWT 방식의 입장권(JWT)에는 사용자 이메일·이름·발급일·유효 기간 등 비교적 많은 정보(클레임)가 포함됩니다.
  3. JWT가 “스테이트리스”하다는 것은 서버가 클라이언트의 상태 정보를 별도로 저장하지 않는다는 의미입니다. 이를 통해 서버 부하를 줄이고, 여러 대의 서버 간 상태 동기화 없이도 확장성을 얻을 수 있습니다.
  4. 헤더(Header)와 페이로드(Payload)를 제외한 나머지 세 번째 부분은 “서명(Signature)”을 생성하는 데 사용됩니다. 서명은 시크릿 키를 이용해 헤더와 페이로드가 위변조되지 않았음을 검증하는 역할을 수행합니다.
  5. 서버가 JWT의 ‘none’ 알고리즘을 제대로 검증하지 않고 “서명 없음” 상태를 유효한 토큰으로 취급하는 경우, 악의적 사용자가 임의로 생성한 무서명 토큰으로도 인증에 성공할 수 있습니다.
  6. JWT 페이로드는 Base64 인코딩되어 누구나 디코딩할 수 있으므로, 민감한 사용자 정보를 그대로 넣으면 외부에 노출될 위험이 있습니다.