서버 측에서 세션을 관리하는 것은 웹 애플리케이션에서 중요한 부분입니다.
클라이언트와 서버 간의 상태를 유지하고 강력한 보안을 유지하기 위해 세션은 필수적입니다.

그러나 Next.js와 Spring과 같은 다양한 웹 개발 도구에서는 세션을 다루는 방식이 다릅니다.
Next.js와 Spring을 사용하여 서버 측에서 세션을 어떻게 관리하는지에 대해 살펴보겠습니다.

Next.js에서의 세션 관리

Next.js는 주로 클라이언트 측에서 세션을 관리합니다.

Nextjs session management 공식문서

암호화된 세션 정보를 브라우저 쿠키에 직접 저장하여 사용자 데이터를 관리합니다.
사용자가 로그인하면 이 암호화된 데이터가 쿠키에 저장됩니다.
각 후속 서버 요청에는 이 쿠키가 포함되어 반복적인 서버 쿼리의 필요성을 최소화하고 클라이언트 측 효율성을 향상시킵니다.

Iron Session을 통한 서버 사이드 세션 관리

Iron Session은 Next.js 애플리케이션에서 서버 사이드에서 세션을 관리할 수 있도록 도와주는 라이브러리입니다.

Iron Session을 사용하면 서버 측에서 세션을 안전하게 관리하고 클라이언트 측에서는 세션 ID를 쿠키에 저장하여 세션을 추적할 수 있습니다.
이를 통해 사용자의 세션 정보를 유지하고 보안 측면에서도 안전한 세션 관리를 할 수 있습니다.
또한 http 통신의 무상태를 잘 지킵니다.

하지만 결국은 모든 데이터를 쿠키에 저장합니다. 결국은 민감한 데이터를 저장하지 말라는 문구가 적혀있습니다. 아무리 암호화 되어 있더라도 세션에 저장할 데이터를 클라이언트에 저장하는 것은 안전하지 않습니다.
또한 민감한 정보가 아니더라도 서버의 상태(스펙)와 관련없이 쿠키의 최대 크기인 4kb라는 한정적인 리소스를 사용해야합니다.

Iron session



Spring에서의 세션 관리

Spring Framework는 서버 사이드에서 세션을 관리하는데 적합한 도구입니다.
톰캣에서 제공해주는 HttpSession을 사용하여 세션을 관리하고, 필요한 경우 세션의 유효성을 검사하고 데이터를 저장할 수 있습니다.
Spring Security와 함께 사용하면 보안 측면에서도 강력한 세션 관리가 가능합니다.

일반적으로 우리가 알고 있는 세션과 똑같습니다.

쿠키 세션 토큰


Iron Session과 Spring의 비교

Iron Session은 Next.js에서의 세션 관리를 간편하게 만들어주지만, Spring은 서버 사이드에서의 세션 관리를 강력하게 지원합니다.

🪖 Iron session

  1. 서버가 없어도 세션 기능을 사용
  2. 네트워크와 관련 없이 사용
  3. 비저장 상태 관리로 세션 클러스팅 필요 x

🐱 Tomcat session

  1. 클라이언트에 1도 노출 x
  2. 간단한 사용

결론

서버 사이드에서 세션을 관리하는 것은 웹 애플리케이션에서 중요한 부분입니다. Next.js와 Spring을 사용하여 각각의 방식으로 세션을 관리하는 방법을 살펴보았습니다. Iron Session과 Spring은 각각의 프레임워크에서 세션을 안전하게 관리할 수 있도록 도와주며, 세션 정보의 유지와 보안에 용이한 기능을 제공합니다.

0개의 댓글

Powered by GraphCDN, the GraphQL CDN