1. 쿠키(Cookie)란?
- 정의: 사용자의 웹 브라우저에 저장되는 작은 데이터 조각.
- 역할: 서버가 브라우저에 상태 정보를 저장하고, 이후 요청 시 자동으로 서버에 전송되도록 함.
- 예시: "로그인 유지하기" 체크박스를 누르면 브라우저에 auth_token 쿠키가 저장되어, 다음 접속 시 자동 로그인 동작.
장점
- 서버 부담이 적음 (데이터를 클라이언트에 저장).
- 간단하게 상태 관리 가능.
단점
- 클라이언트에서 직접 수정/노출될 수 있어 보안 취약.
- 용량 제한이 있음(브라우저마다 약 4KB 내외).
2. 세션(Session)이란?
- 정의: 서버 측에서 사용자 상태를 관리하는 방식. 브라우저와 서버 간 연결이 유지되는 동안 데이터를 서버 메모리나 DB에 저장.
- 역할: 서버가 브라우저마다 고유한 세션 ID를 발급하고, 이 ID를 통해 사용자별 상태를 추적.
- 예시: 로그인 성공 시 서버가 session_id를 만들고, 클라이언트 쿠키에 저장. 이후 요청마다 session_id를 전달해 서버에서 사용자 정보를 식별.
장점
- 데이터가 서버에 있으므로 보안성이 상대적으로 높음.
- 용량 제한이 없어 많은 데이터 저장 가능.
단점
- 서버 자원 사용 증가 (많은 사용자가 접속하면 메모리/스토리지 부담).
- 세션 클러스터링이 필요(멀티 서버 환경에서 세션 동기화 문제 발생).
3. 보안 관점에서의 고려 사항
- 세션 하이재킹(Session Hijacking)
- 공격자가 세션 ID를 탈취하면 다른 사람으로 가장 가능.
- 방어: HTTPS 사용, 세션 ID를 예측 불가능하게 생성, 세션 타임아웃 설정.
- 쿠키 보안 속성
- HttpOnly: 자바스크립트 접근 불가 (XSS 방어).
- Secure: HTTPS 연결에서만 전송.
- SameSite: CSRF 방어용 속성.
- 세션 관리
- 세션 만료 시간 설정(예: 30분 미사용 시 만료).
- 중요한 데이터는 세션에만 저장, 쿠키에는 최소한의 정보(세션 ID 정도만).
'보안' 카테고리의 다른 글
| XSS(Cross-Site Scripting) (0) | 2025.10.28 |
|---|---|
| JWT(Json Web Token) (0) | 2025.10.28 |
| HTTPS와 SSL인증서의 역할 (0) | 2025.10.28 |
| CSRF(Cross-Site Request Forgery) (0) | 2025.10.28 |
| 730만 취업준비생 이력서·자소서 해킹에 ‘탈탈’ 털렸다 (0) | 2025.10.25 |