보안

쿠키와 세션

zinoing

1. 쿠키(Cookie)란?

  • 정의: 사용자의 웹 브라우저에 저장되는 작은 데이터 조각.
  • 역할: 서버가 브라우저에 상태 정보를 저장하고, 이후 요청 시 자동으로 서버에 전송되도록 함.
  • 예시: "로그인 유지하기" 체크박스를 누르면 브라우저에 auth_token 쿠키가 저장되어, 다음 접속 시 자동 로그인 동작.

장점

  • 서버 부담이 적음 (데이터를 클라이언트에 저장).
  • 간단하게 상태 관리 가능.

단점

  • 클라이언트에서 직접 수정/노출될 수 있어 보안 취약.
  • 용량 제한이 있음(브라우저마다 약 4KB 내외).

2. 세션(Session)이란?

  • 정의: 서버 측에서 사용자 상태를 관리하는 방식. 브라우저와 서버 간 연결이 유지되는 동안 데이터를 서버 메모리나 DB에 저장.
  • 역할: 서버가 브라우저마다 고유한 세션 ID를 발급하고, 이 ID를 통해 사용자별 상태를 추적.
  • 예시: 로그인 성공 시 서버가 session_id를 만들고, 클라이언트 쿠키에 저장. 이후 요청마다 session_id를 전달해 서버에서 사용자 정보를 식별.

장점

  • 데이터가 서버에 있으므로 보안성이 상대적으로 높음.
  • 용량 제한이 없어 많은 데이터 저장 가능.

단점

  • 서버 자원 사용 증가 (많은 사용자가 접속하면 메모리/스토리지 부담).
  • 세션 클러스터링이 필요(멀티 서버 환경에서 세션 동기화 문제 발생).

3. 보안 관점에서의 고려 사항

  1. 세션 하이재킹(Session Hijacking)
    • 공격자가 세션 ID를 탈취하면 다른 사람으로 가장 가능.
    • 방어: HTTPS 사용, 세션 ID를 예측 불가능하게 생성, 세션 타임아웃 설정.
  2. 쿠키 보안 속성
    • HttpOnly: 자바스크립트 접근 불가 (XSS 방어).
    • Secure: HTTPS 연결에서만 전송.
    • SameSite: CSRF 방어용 속성.
  3. 세션 관리
    • 세션 만료 시간 설정(예: 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