세션과 쿠키는 웹 애플리케이션에서 사용자의 상태 정보를 유지하기 위해 사용되는 기술입니다.
이들은 HTTP의 무상태성(statelessness)을 보완하여 사용자 친화적인 웹 서비스를 제공하는 데 도움을 줍니다.
1. 쿠키(Cookie)
쿠키는 웹 서버가 사용자의 브라우저에 저장하는 작은 텍스트 파일입니다. 쿠키는 사용자의 브라우저에 저장되므로 서버의 부담을 줄일 수 있습니다.
쿠키의 특징
- 이름, 값, 만료 시간, 도메인, 경로 등의 정보를 포함합니다.
- 사용자의 브라우저에 저장되므로 서버 부하를 줄일 수 있습니다.
- 보안에 취약할 수 있으며, 사용자가 쿠키를 삭제할 수 있습니다.
- 도메인 단위로 관리되므로 다른 도메인에서 접근할 수 없습니다.
쿠키 사용 예시 (Java Servlet)
1
2
3
4
5
6
7
8
9
10
11
12
13
|
// 쿠키 생성
Cookie cookie = new Cookie(“username”, “john”);
cookie.setMaxAge(3600); // 쿠키 만료 시간 설정 (초 단위)
response.addCookie(cookie); // 응답에 쿠키 추가
// 쿠키 읽기
Cookie[] cookies = request.getCookies();
for (Cookie cookie : cookies) {
if (cookie.getName().equals(“username”)) {
String username = cookie.getValue();
// …
}
}
|
cs |
2. 세션(Session)
세션은 웹 서버에서 관리하는 사용자 상태 정보입니다. 세션은 일반적으로 서버의 메모리에 저장되며, 사용자마다 고유한 세션 ID를 할당받습니다.
세션의 특징
- 서버에서 관리되므로 쿠키보다 안전합니다.
- 세션 ID는 쿠키를 통해 클라이언트와 서버 간에 주고받습니다.
- 서버 메모리를 사용하므로 많은 사용자가 접속할 경우 서버 부하가 증가할 수 있습니다.
- 세션은 일반적으로 사용자가 로그아웃하거나 일정 시간 동안 활동이 없을 때 만료됩니다.
세션 사용 예시 (Java Servlet)
1
2
3
4
5
6
7
8
9
10
11
|
// 세션 생성 또는 가져오기
HttpSession session = request.getSession();
// 세션에 값 저장
session.setAttribute(“username”, “john”);
// 세션에서 값 읽기
String username = (String) session.getAttribute(“username”);
// 세션 만료
session.invalidate();
|
cs |
3. 세션과 쿠키의 비교
- 저장 위치: 쿠키는 클라이언트에 저장되고, 세션은 서버에 저장됩니다.
- 보안: 세션이 쿠키보다 안전합니다.
- 서버 부하: 쿠키는 서버 부하를 줄일 수 있지만, 세션은 서버 메모리를 사용하므로 부하가 증가할 수 있습니다.
- 만료: 쿠키는 만료 시간을 설정할 수 있지만, 세션은 일반적으로 사용자가 로그아웃하거나 일정 시간 동안 활동이 없을 때 만료됩니다.
세션과 쿠키는 웹 애플리케이션에서 사용자 상태를 유지하기 위한 중요한 기술입니다. 이들을 적절히 활용하면 사용자 경험을 향상시키고, 보다 안전하고 효율적인 웹 서비스를 제공할 수 있습니다.