개념
쿠키는 클라이언트(브라우저)에 저장되는 작은 데이터입니다.
서버가 Set-Cookie 헤더를 통해 브라우저에 저장시키며, 이후 같은 도메인 요청 시 자동으로 전송됩니다.
주로 사용자 환경 설정, 로그인 유지, 장바구니 정보 등에 사용됩니다.
쿠키 특징
저장 위치: 클라이언트(브라우저)
크기 제한: 약 4KB
만료 기간 설정 가능
사용자가 수정하거나 삭제 가능
민감 정보 저장은 권장되지 않음
쿠키 생성
setcookie("user", "홍길동", time() + 3600, "/"); // 1시간 유지
if (isset($_COOKIE['user'])) {
echo "사용자: " . $_COOKIE['user'];
}
setcookie("user", "", time() - 3600, "/"); // 만료 시간 과거로 설정
세션은 서버에 저장되는 사용자 정보입니다.
브라우저에는 세션 ID만 쿠키로 저장(PHPSESSID)되고, 실제 데이터는 서버에 저장됩니다.
보안성이 쿠키보다 높음.
저장 위치: 서버
크기 제한 없음 (서버 저장 공간에 의존)
브라우저 종료 시 기본적으로 만료
보안이 중요한 정보 저장 가능 (로그인 상태, 인증 정보 등)
session_start(); // 세션 사용 시작
$_SESSION['user'] = "홍길동";
session_start();
if (isset($_SESSION['user'])) {
echo "세션 사용자: " . $_SESSION['user'];
}
session_start();
session_unset(); // 모든 세션 변수 제거
session_destroy(); // 세션 종료
항목 |
쿠키 |
세션 |
---|---|---|
저장 위치 |
클라이언트(브라우저) |
서버 |
보안 |
낮음(사용자 변경 가능) |
높음 |
용량 제한 |
약 4KB |
서버 저장 공간에 의존 |
속도 |
빠름(클라이언트에서 읽음) |
상대적으로 느림 |
유지 기간 |
설정 가능 |
브라우저 종료 시 기본 만료 |
사용 예시 |
자동 로그인, UI 설정 |
로그인 상태, 장바구니, 인증 정보 |
// login.php
session_start();
$_SESSION['user_id'] = 123;
setcookie("remember_me", "1", time() + 86400, "/"); // 하루 유지
echo "로그인 완료";
// profile.php
session_start();
if (isset($_SESSION['user_id'])) {
echo "회원 정보 표시";
} elseif (isset($_COOKIE['remember_me'])) {
echo "쿠키로 로그인 유지";
} else {
echo "로그인 필요";
}
쿠키에 민감 정보 저장 금지 (비밀번호, 카드번호 등)
세션 하이재킹 방지 → 세션 ID 재생성 (session_regenerate_id(true))
HTTPS 사용 시 setcookie()에 secure와 httponly 옵션 설정 권장
세션 저장 위치를 안전하게 설정(/tmp 외 다른 디렉토리 또는 DB)
쿠키: 사용자 기기에 저장, 간단한 정보 유지
세션: 서버에 저장, 보안이 중요한 정보 관리
실무에서는 로그인 등 중요한 정보는 세션을 사용하고, 편의성 정보는 쿠키에 저장하는 방식이 일반적입니다.