둘 다 서버와 클라이언트 간의 상태를 유지하는 중요한 기술이지만, 작동 방식과 사용되는 상황에서 큰 차이가 있습니다.
1. 쿠키(Cookie)란?
쿠키의 정의
쿠키는 클라이언트 측(즉, 사용자의 브라우저)에 저장되는 작은 데이터 파일입니다. 웹 서버가 클라이언트에게 특정 정보를 저장하고 다시 요청할 때마다 그 정보를 가져오도록 하는 방식으로 동작합니다. 쿠키는 클라이언트 측에서 데이터를 관리하므로 서버의 부하를 줄일 수 있는 장점이 있습니다.
쿠키의 특징
- 클라이언트 측에 저장되며, 서버에 전달될 때마다 자동으로 포함됩니다.
- 사용자의 정보(예: 로그인 정보, 사용자 설정 등)를 저장하여, 브라우저를 종료한 후에도 유지할 수 있습니다.
- 쿠키의 만료 기간을 설정할 수 있어, 특정 기간 동안 유효한 정보를 저장할 수 있습니다.
쿠키를 사용하는 상황
- 로그인 상태 유지: 사용자가 로그인하면 아이디나 토큰을 쿠키에 저장하여, 브라우저를 재시작하거나 세션이 만료되더라도 로그인 상태를 유지할 수 있습니다.
- 사용자 맞춤 설정: 사용자가 설정한 테마나 언어 설정 등을 쿠키에 저장하여, 이후 방문 시에도 동일한 환경을 제공할 수 있습니다.
예시:
아래의 로그인 코드에서는 사용자가 "아이디"를 기억하는 옵션을 선택한 경우, 로그인 후 쿠키에 저장하는 예시가 있습니다.
// 로그인 성공 후 쿠키 설정
if (rememberId) {
Cookie idCookie = new Cookie("id", id); // 아이디 쿠키 생성
idCookie.setMaxAge(60 * 60 * 24 * 7); // 쿠키의 만료 시간을 7일로 설정
response.addCookie(idCookie); // 응답에 쿠키 추가
}
이 코드에서 사용자가 "아이디 저장"을 선택하면, 해당 아이디를 쿠키에 저장하고, 7일간 유효하도록 설정합니다.
이렇게 저장된 쿠키는 사용자가 페이지를 다시 방문할 때마다 자동으로 서버에 전송되어, 로그인 상태를 유지하는 데 활용됩니다.
2. 세션(Session)란?
세션의 정의
세션은 서버 측에서 사용자의 상태 정보를 관리하는 방식입니다. 사용자가 웹 애플리케이션에 접속하면 서버는 고유한 세션 ID를 발급하고, 이를 통해 각 사용자별 정보를 서버 메모리 등에 저장합니다. 세션은 브라우저가 종료되거나 세션이 만료될 때까지 유효합니다.
세션의 특징
- 서버 측에서 저장되며, 클라이언트는 세션 ID만을 가지고 관리합니다.
- 서버에 상태 정보를 저장하므로, 보안 측면에서 쿠키보다 유리합니다.
- 만료 시간을 설정할 수 있으며, 세션이 만료되면 해당 정보는 더 이상 유효하지 않습니다.
세션을 사용하는 상황
- 로그인 상태 관리: 사용자가 로그인하면 세션에 로그인 정보를 저장하고, 다른 페이지로 이동하거나 새로고침을 해도 로그인 상태를 유지할 수 있습니다.
- 쇼핑카드: 사용자가 쇼핑몰에서 선택한 상품 정보를 세션에 저장하여, 여러 페이지를 이동할 때도 쇼핑카드 상태를 유지할 수 있습니다.
예시:
아래의 로그인 코드에서는 사용자가 로그인할 때, 아이디와 닉네임을 세션에 저장하는 부분이 있습니다.
// 세션 객체를 얻어오기
HttpSession session = request.getSession();
// 세션 객체에 id와 nickname 저장
session.setAttribute("id", id);
session.setAttribute("nickname", nickname);
이 코드에서는 사용자가 로그인한 후, 아이디(id)와 닉네임(nickname)을 세션에 저장합니다.
이후 사용자가 다른 페이지로 이동하더라도, 세션에 저장된 값에 접근하여 로그인 상태를 확인할 수 있습니다.
3. 쿠키와 세션의 차이점
구분
구분 | 쿠키(Cookie) | 세션(Session) |
저장 위치 | 클라이언트(사용자 브라우저) 측에 저장 | 서버 측에 저장 |
유효 기간 | 쿠키의 만료 시간을 설정 가능 (기본적으로 브라우저 종료 시 삭제) | 세션은 서버에서 관리되며, 보통 브라우저 종료 시 또는 세션 만료 시 삭제 |
용량 | 용량이 작고 한 도메인에서 여러 개의 쿠키를 저장할 수 있음 | 서버 측에 저장되므로, 용량이 상대적으로 더 크고 한 세션에 여러 데이터를 저장할 수 있음 |
보안 | 클라이언트 측에서 저장되므로 보안에 취약할 수 있음 | 서버 측에서 저장되므로 보안이 상대적으로 더 안전함 |
사용 예시 | 로그인 유지, 사용자 맞춤 설정 | 로그인 관리, 쇼핑카드, 사용자 상태 관리 |
4. 어떤 상황에서 쿠키와 세션을 사용해야 할까?
- 쿠키를 사용할 때:
- 로그인 유지가 필요하거나, 사용자 맞춤형 설정(예: 테마, 언어 선택 등)을 저장할 때 유용합니다.
- 쿠키는 브라우저가 종료되거나 세션이 만료되더라도 사용자 정보를 저장할 수 있기 때문에, 사용자의 상태를 일정 기간 동안 유지해야 할 때 적합합니다.
- 세션을 사용할 때:
- 보안이 중요한 정보(예: 로그인 상태, 결제 정보 등)를 다룰 때 세션을 사용하는 것이 적합합니다.
- 사용자가 사이트를 이용하는 동안에만 상태를 유지하고, 브라우저 종료 후에는 상태를 자동으로 초기화하고 싶을 때 세션을 사용합니다.
결론
쿠키는 클라이언트 측에서 정보를 저장하고, 세션은 서버 측에서 정보를 관리하는 방식으로, 보안, 유지 기간, 용도에 따라 각각 적합한 상황에서 사용됩니다.
'패스트캠퍼스 데브캠프 : 남궁성의 백엔드 개발 3기' 카테고리의 다른 글
Spring MVC | 관심사의 분리, MVC 패턴 (0) | 2025.02.25 |
---|---|
SQL 퀴즈 풀기 (0) | 2025.02.25 |
Spring MVC | HttpServletResponse와 HttpServletRequest: 웹 애플리케이션에서의 역할과 사용 예시 (0) | 2025.02.25 |
Spring MVC | GET과 POST 차이점과 예시 (0) | 2025.02.25 |
AWS 서버 구축하기 (1) | 2025.02.24 |