IMG-LOGO
공지사항 :

PHP 쿠키(Cookie) 세션(Session)

lmkfox - 2025-08-12 06:52:56 29 Views 0 Comment

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. 결론

  • 쿠키: 사용자 기기에 저장, 간단한 정보 유지

  • 세션: 서버에 저장, 보안이 중요한 정보 관리

  • 실무에서는 로그인 등 중요한 정보는 세션을 사용하고, 편의성 정보는 쿠키에 저장하는 방식이 일반적입니다.


댓글