세션이란 무엇인가요? 쿠키와 어떻게 다른가요?
Session소개
세션은 사용자가 웹사이트를 탐색할 때 사용자의 상태를 추적하고 저장하기 위한 서버 측 상태 유지 메커니즘입니다. 세션은 사용자와 서버 간의 단일 세션을 나타내며 서버의 메모리, 데이터베이스 또는 파일 시스템에 저장될 수 있습니다.
Session구현
일반적으로 클라이언트가 서버에 처음 요청하면 서버는 세션 객체를 생성하고 고유 세션 ID를 생성하며, 이 세션 ID는 일반적으로 쿠키를 통해 클라이언트의 브라우저로 전송되고, 브라우저가 서버에 요청을 보낼 때마다 브라우저는 이 세션 ID를 가져가고 서버는 이 ID를 사용하여 다른 사용자를 식별합니다.
샘플 코드
Java에서 세션을 사용하는 예제입니다:
// 서블릿에서 세션 가져오기
HttpSession session = request.getSession();
// 세션에 데이터 저장
session.setAttribute("username", "장산");
// 세션에서 데이터 가져오기
String username = (String) session.getAttribute("username");
Cookie구현
쿠키는 클라이언트 측 상태 유지 메커니즘으로, 서버에서 사용자의 브라우저로 전송되어 로컬에 저장되는 작은 데이터 조각입니다. 예를 들어 사용자의 로그인 상태를 유지하기 위해 사용자를 식별하는 데 사용할 수 있습니다.
샘플 코드
Java에서 쿠키를 설정하고 가져오는 예제입니다:
// 쿠키 생성
Cookie cookie = new Cookie("username", "장산");
// 쿠키 유효기간 설정
cookie.setMaxAge(60*60*24); //
// 클라이언트에 쿠키 보내기
response.addCookie(cookie);
// 요청에서 쿠키 가져오기
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie c : cookies) {
if ("username".equals(c.getName())) {
String username = c.getValue();
// 사용자 이름 처리
}
}
}
세션을 사용하여 상태를 유지하는 방법
- 세션 개체를 사용하여 사용자 인증 정보, 장바구니 콘텐츠 등의 사용자 정보 및 상태를 저장합니다.
- 서버는 세션 ID에 따라 여러 사용자의 상태를 구분합니다.
쿠키로 몸매를 유지하는 방법
- 클라이언트 측에 쿠키를 저장하여 사용자 기본 설정, 신원 정보 등을 기록합니다.
- 요청이 있을 때마다 브라우저는 자동으로 쿠키를 서버로 전송하여 상태 추적을 활성화합니다.
다른 저장 위치
- 세션은 서버 측에 저장됩니다.
- 쿠키는 클라이언트 측에 저장됩니다.
다양한 스토리지 용량
- 세션은 더 큰 데이터를 저장할 수 있습니다.
- 쿠키에는 일반적으로 4KB 이하의 크기 제한이 있습니다.
액세스 권한의 차이
- 세션은 서버 측 API를 통해 액세스합니다.
- 쿠키는 클라이언트 측 자바스크립트 또는 서버 측 HTTP 헤더를 통해 액세스됩니다.
다양한 개인정보 보호 정책
- 세션 데이터는 보안을 강화하기 위해 서버에 저장됩니다.
- 쿠키는 클라이언트 측에 저장되며 XSS 및 CSRF와 같은 공격에 취약합니다.
다른 유효 기간
- 세션 유효성은 일반적으로 세션에 따라 다릅니다.
- 쿠키는 장기간 유효하도록 설정할 수 있습니다.
다른 서버 압력
- 세션이 서버에 저장되므로 서버 부담이 증가합니다.
- 쿠키는 서버 부담을 줄이기 위해 클라이언트 측에 저장됩니다.
브라우저 지원은 다양합니다.
- 거의 모든 브라우저에서 쿠키를 지원합니다.
- 세션은 쿠키 또는 URL 재작성에 의존합니다.
클라이언트가 쿠키를 지원하는 경우
- 쿠키는 상태 관리를 위해 보다 효과적으로 사용될 수 있습니다.
- 하지만 개인정보 보호 및 보안 문제에 유의하세요.
도메인 간 지원의 차이점
- 쿠키는 상동성 정책에 의해 제한되며 도메인을 쉽게 넘나들 수 없습니다.
- 다른 방법으로 세션을 교차 도메인으로 만들 수 있습니다.
저장 위치: 서버의 세션, 클라이언트의 쿠키.
보안: 세션은 더 안전하지만 쿠키는 취약합니다.
용량 및 효율성: 세션 용량이 커서 서버에 부담을 주고, 쿠키 용량이 작아서 클라이언트에 부담을 줍니다.
종속성: 세션은 쿠키 또는 URL 재작성에 따라 달라질 수 있습니다.
만료일: 세션은 일반적으로 임시이며 쿠키는 영구적으로 저장될 수 있습니다.
교차 도메인 기능: Session은 교차 도메인 문제를 처리하는 데 더 적합합니다.
위의 비교를 통해 세션과 쿠키는 각각의 장단점이 있으며, 실제 요구 사항과 보안 정책에 따라 상태 관리에 적합한 방법을 선택해야 한다는 것을 알 수 있습니다.





