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