보안 · 중급
JWT(JSON Web Token)의 구조와 인증 방식, 그리고 보안 주의사항을 설명해주세요.
힌트 · Header.Payload.Signature 구조, 서명 검증, 만료 시간, XSS/탈취 대응을 설명해보세요.
HeaderPayloadSignatureHMACHTTPS
모범답안
JWT는 웹 표준 인증 방식 중 하나로, Header, Payload, Signature 세 부분으로 구성됩니다.
Header는 토큰 타입과 암호화 알고리즘 정보를 담고, Payload는 사용자 정보나 권한 같은 클레임 정보를 JSON 형태로 담습니다. Signature는 Header와 Payload를 합쳐 비밀키로 암호화한 값으로, 토큰의 무결성을 검증하는 데 사용됩니다.
인증 방식은 서버가 사용자를 인증한 후 JWT를 생성하여 클라이언트에게 전달하고, 클라이언트는 이후 요청 시 JWT를 담아 서버에 전달합니다. 서버는 Signature를 검증하여 토큰의 유효성을 확인하고, Payload에 담긴 정보를 활용하여 사용자를 인증합니다.
보안을 위해서는 HTTPS를 사용하여 토큰 탈취를 막고, Payload에 민감한 정보를 직접 담지 않도록 주의해야 합니다. 또한, 토큰 만료 시간을 설정하여 토큰이 탈취되더라도 피해를 최소화해야 하며, XSS 공격에 대비하여 클라이언트 측에서 토큰을 안전하게 저장하고 관리해야 합니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 웹 보안 면접 질문
- OAuth 2.0의 Authorization Code Grant 플로우에서 인가 코드(authorization code)와 액세스 토큰을 분리해서 두 단계로 주고받는 이유는 무엇인가요?
- HTTPS와 TLS의 동작 원리를 설명해주세요.
- 대칭 암호화와 비대칭 암호화의 차이점을 설명하고, 각각의 사용 사례를 들어주세요.
- OAuth 2.0의 흐름과 주요 Grant Type에 대해 설명해주세요.
- 세션 기반 인증과 토큰 기반 인증의 차이점과 장단점을 설명해주세요.
- CORS(Cross-Origin Resource Sharing)란 무엇이며, 어떻게 설정하나요?