Next-Squad / Interview-Question

주니어 백엔드 개발자 면접 시에 물어볼 수 있는 질문에 대해서 같이 공부하고, 공유하고자 합니다.
169 stars 11 forks source link

[Network] 17. HTTP에서 상태유지(stateful)를 하는 방법을 설명해주세요. #29

Open CMSSKKK opened 2 years ago

CMSSKKK commented 2 years ago

HTTP에서 상태유지(stateful)를 하는 방법을 설명해주세요.

키워드

stateless, 로그인, stateful

CMSSKKK commented 2 years ago

무상태, stateless는 HTTP의 특징입니다. 서버가 클라이언트의 상태를 저장하지 않는 것을 뜻합니다.

하지만 이렇게 상태를 저장하지 않으면, 로그인 정보가 필요한 요청마다 클라이언트에게 계속 로그인을 요청해야합니다. 그래서 이러한 경우에는 상태유지(stateful)를 할 수 밖에 없습니다.

상태 유지는 최소한만 하고 무상태로 설계하는 것을 권장합니다.

상태유지를 하는 방법은 대표적으로 3가지입니다. 쿠키, 세션, 토큰입니다.

쿠키는 HTTP 헤더의 Set-Cookie를 통해서 웹 브라우저에 정보를 저장하는 것입니다.

세션은 쿠키를 사용하는 것은 동일하나, 쿠키에 로그인 정보와 같은 민감 정보를 담는 것이 아니라 서버에서 관리하는 것입니다.

토큰의 경우 대표적으로 JWT가 있으며, 클라이언트는 헤더에 암호화된 토큰을 담아서 전달합니다. JWT의 경우 header와 payload의 경우는 단순히 encoding되어있어서 decoding하면 누구든 그 정보를 확인할 수 있지만, 비밀키를 통해서 위조를 확인해 인증을 거부할 수 있습니다.

References

모든 개발자를 위한 HTTP 웹 기본 지식