Session 최종 수정일 2026-06-19 01:58 조회수 10
대시보드

Session

기본 정보

  • 명칭: Session
  • 한글명: 세션
  • 분류: 서버 기반 사용자 상태 관리
  • 주요 용도: 로그인 인증 및 사용자 정보 유지
  • 관련 주제: #Session #Cookie #인증 #PHP #보안

개요

Session(세션)은 사용자의 상태(State)를 서버에 저장하여 로그인 정보와 사용자 데이터를 유지하는 기술이다.

웹은 기본적으로 Stateless(무상태) 프로토콜인 HTTP를 사용하기 때문에 페이지를 이동하면 사용자를 기억하지 못한다. 이를 해결하기 위해 Session과 Cookie를 함께 사용한다.

로그인 후에도 사용자가 계속 인증된 상태를 유지할 수 있는 이유가 바로 Session 때문이다.


Session 구조

사용자

↓

브라우저

↓

Session ID (Cookie)

↓

웹 서버

↓

Session 저장소

↓

사용자 정보

동작 과정

로그인 요청

↓

아이디/비밀번호 확인

↓

Session 생성

↓

Session ID 발급

↓

Cookie 저장

↓

다음 요청

↓

Session ID 전송

↓

서버 인증

↓

응답

Session과 Cookie 관계

Browser

↓

Cookie

(Session ID)

↓

Server

↓

Session Data

브라우저에는 Session ID만 저장되고, 실제 사용자 정보는 서버에 저장된다.


PHP Session 시작

<?php

session_start();

?>

세션을 사용하기 전에 반드시 호출해야 한다.


Session 저장

$_SESSION['mb_id']

=

'admin';

Session 조회

echo

$_SESSION['mb_id'];

Session 삭제

특정 값 삭제

unset(

$_SESSION['mb_id']

);

전체 삭제

session_destroy();

로그아웃 시 주로 사용된다.


로그인 예제

session_start();

$_SESSION['login']

=

true;

$_SESSION['user']

=

'구름';

로그인 확인

if(

isset(

$_SESSION['login']

)

){

echo "로그인";

}

Session 저장 위치

대표 위치

Linux

/var/lib/php/sessions/

Windows

C:\Windows\Temp\

또는 Redis, Memcached, Database 등에 저장하기도 한다.


Session ID

예시

8d4a7f91a2b1c...

브라우저의 Cookie에 저장되며 서버에서 사용자를 식별하는 키 역할을 한다.


Session Timeout

일정 시간 동안 요청이 없으면 세션이 만료된다.

예시

30분

1시간

2시간

PHP 설정

session.gc_maxlifetime=1440

Session과 JWT 비교

SessionJWT
서버 저장클라이언트 저장
StatefulStateless
서버 메모리 사용서버 메모리 사용 적음
강제 로그아웃 가능발급 후 즉시 폐기 어려움
전통 웹에 적합모바일/API에 적합

Session과 Cookie 비교

SessionCookie
서버 저장브라우저 저장
보안 우수변조 위험
용량 제한 적음약 4KB 제한
로그인 관리사용자 설정 저장

Session 장점

  • 서버에서 관리
  • 보안성이 높음
  • 강제 로그아웃 가능
  • 민감한 정보 노출 방지
  • 구현이 간단함

Session 단점

  • 서버 메모리 사용
  • 서버 확장 시 Session 공유 필요
  • 대규모 서비스에서는 관리 비용 증가
  • 서버 장애 시 세션 손실 가능

Session 공유

다중 서버 환경에서는 다음 기술을 사용한다.

Web1

↓

Redis

↑

Web2

대표 기술

  • Redis
  • Memcached
  • Database

Session Hijacking

공격자가 Session ID를 탈취하여 로그인 상태를 가로채는 공격이다.

예방 방법

  • HTTPS 사용
  • Session ID 재발급
  • HttpOnly Cookie
  • Secure Cookie
  • SameSite 설정

Session Fixation

로그인 전 Session ID를 유지하여 공격하는 기법이다.

예방

session_regenerate_id(

true

);

로그인 성공 후 Session ID를 새로 생성하는 것이 권장된다.


Cookie 설정

session_set_cookie_params([

"httponly"=>true,

"secure"=>true,

"samesite"=>"Lax"

]);

보안 강화를 위해 자주 사용된다.


대표 활용 분야

  • 로그인 인증
  • 관리자 페이지
  • ERP
  • 쇼핑몰
  • 커뮤니티
  • 게시판
  • CMS
  • 그룹웨어

실무 메모

실무에서는 다음과 같은 방식이 권장된다.

  • 로그인 후 session_regenerate_id(true) 호출
  • HttpOnly Cookie 적용
  • HTTPS 환경에서 Secure Cookie 사용
  • SameSite=Lax 또는 Strict 적용
  • Session Timeout 설정
  • Redis 기반 Session 공유
  • 로그아웃 시 session_destroy() 수행
  • 민감한 정보는 Session에도 최소한만 저장
  • IP 또는 User-Agent 검증 고려
  • 장시간 미사용 시 자동 로그아웃 구현

Session과 함께 사용하는 기술


대표 활용 사례

  • PHP 로그인 시스템
  • 그누보드 회원 인증
  • 워드프레스 관리자 로그인
  • ERP 로그인
  • 쇼핑몰 회원 관리
  • 관리자(Admin) 페이지
  • 사내 그룹웨어
  • CMS 로그인

관련 문서


출처

  • PHP 공식 문서 - Sessions
  • MDN Web Docs - Cookies
  • OWASP Session Management Cheat Sheet