질문 151 · 실전 면접 답변
토큰 인증과 JWT를 쿠키에 저장할 때의 보안 위험과 대책은 무엇인가요?
이렇게 답해 보세요 (핵심 답변)
JWT 기반 토큰 인증은 서버가 클라이언트에 서명된 토큰을 발급하고, 요청마다 토큰의 서명과 만료 시간(exp)·클레임을 검증해 신원을 확인하는 방식입니다. 이때 기본 서명된 JWT(JWS)의 Payload는 암호화된 것이 아니라 Base64Url로 인코딩된 상태라 누구나 디코딩해 볼 수 있으므로 민감 정보를 넣으면 안 됩니다. 또한 JWT를 쿠키에 저장할 경우 HttpOnly 속성으로 XSS를 통한 토큰 문자열 직접 탈취는 막을 수 있지만, 쿠키의 자동 전송 특성 때문에 CSRF 공격에 노출될 수 있으므로 SameSite 설정과 CSRF 토큰·Origin 검증, 짧은 Access Token 수명과 토큰 회전·폐기 정책을 함께 설계해야 합니다.
함께 설명하면 좋은 이유 (꼬리질문 대비)
- 토큰의 포맷(JWT)과 브라우저 내 저장 위치(localStorage vs HttpOnly 쿠키)는 각각 다른 보안 위협(XSS 토큰 탈취 vs CSRF 자동 전송)과 연결됩니다.
- 만약 사이트에 XSS 취약점이 뚫리면 HttpOnly 쿠키의 문자열을 직접 읽지는 못하더라도 공격자 스크립트가 브라우저 안에서 인증된 API 요청(fetch)을 대신 보낼 수는 있다는 점도 이해해야 합니다.
면접에서 자주 하는 실수
JWT는 무상태(Stateless) 토큰이라는 이유만으로 짧은 만료 시간이나 Refresh Token 폐기·블랙리스트 같은 탈취 대응책을 전혀 고려하지 않으면 보안 사고 시 대처하기 어렵습니다.
원리와 예제까지 읽기
공식 참고 자료
질문 목록 출처 ↗ · 원본 151번을 바탕으로 질문과 답변을 새로 정리했습니다.