Almon Dev

모의해킹 공부 정리 13일차 (쿠키와 세션) 본문

모의해킹/모의해킹

모의해킹 공부 정리 13일차 (쿠키와 세션)

Almon 2024. 10. 29. 19:08

쿠키(Cookie)

쿠키는 유저의 정보를 브라우저에 저장하기 위해서 사용되는 파일입니다.
브라우저가 종료되어도 파일상태로 남아있으며 만료날짜를 지정할 수 있습니다.

쿠키는 장바구니 목록이나 로그인 상태 정보를 브라우저에 저장해 둘 수 있습니다.

 

쿠키 생성 방법

서버는 클라이언트의 요청에 응답할 때 set-cookie 헤더를 전송해서 쿠키를 생성할 수 있습니다.
set-cookie 헤더 구조 : set-cookie: name = value; expires=만료날짜; domain=도메인; path=경로
응답을 받은 브라우저가 쿠키를 생성하고 관리합니다.

 

name : 이름과 값으로 이루어진 쿠키의 정보입니다. 

ex)

id=admin

 

expires : 쿠키의 만료 날짜를 지정할 수 있습니다. 지정된 날짜가 지나면 자동으로 삭제됩니다.

ex)

expires= Wed, 30 Oct 2024 00:00:00 GMT

"Wed, 30 Oct 2024 00:00:00 GMT"는 RFC 1123 형식으로 날짜와 시간을 나타내는 것입니다.
expries는 RFC 1123 형식으로만 만료일자를 지정할 수 있습니다.

 

domain : 쿠키가 사용되는 도메인을 의미합니다. 

ex)

domain=test.com는 test.com의 도메인에서만 쿠키가 사용될 수 있습니다.

domain=.test.com처럼  .이 붙은 경우 test.com 뿐만 아니라 하위 도메인 역시 모두 쿠키가 사용될 수 있습니다.

www.test.com등

 

path : 쿠키가 사용되는 경로를 의미합니다.

ex)

path=/cookie

/cookie나 /cookie/test처럼 /cookie의 하위 경로에서만 쿠키가 사용됩니다.

 

php로 쿠키 생성

<?php
	setcookie('id', 'admin', time() + 60 * 60, '/', '.test.com');
?>

 

setcookie(name, value, expires, path, domain); 의 구조를 이루고 있습니다.

 

쿠키 확인 방법

 

브라우저를 이용

개발자 도구의 애플리케이션탭에 쿠키가 있습니다.

 

php로 쿠키 확인

<?php
    $coockie = $_COOKIE['id'];
    var_dump($cookie);
?>

$_COOKIE는 php에서 사용되는 쿠키를 저장해 두는 배열 형태의 전역 변수입니다.

 

쿠키 삭제 방법

쿠키를 삭제하는 방법은 쿠키의 만료날짜를 끝내버리는 것입니다.
set-cookie를 이용해서 만료날짜를 과거로 재설정하면 브라우저가 쿠키를 삭제합니다.

 

php로 쿠키 삭제

<?php
	setcookie('id', '', time() - 3600, '/', '.test.com');
?>

만료날짜를 1시간 전으로 만들어서 바로 쿠키를 삭제해 줍니다.

 

세션(Session)

세션은 유저의 정보를 서버에 저장할 때 사용되는 파일입니다.
세션은 브라우저가 종료될 때 자동으로 삭제됩니다.

세션은 장바구니 목록이나 로그인 상태 정보를 서버에 저장해 둘 수 있습니다.

 

세션 생성 방법

서버에서 세션을 생성합니다.
세션 ID를 생성하고 클라이언트에 set-cookie 헤더로 보내서 쿠키를 생성합니다.
사용자의 데이터를 세션에 저장합니다.

 

php 세션 생성

<?php
	seesion_start(); 
?>

session_start()는 세션을 생성하며 자동으로 세션 ID를 생성합니다.

set-cookie 헤더를 통해 브라우저에 PHPSESSID라는 이름으로 쿠키를 저장합니다.

 

php 세션 내용 추가

<?php
	$_SESSION['id'] = $id;
?>

$_SESSION이라는 전역 변수를 통해 세션내부에 값을 추가하고 사용할 수 있습니다.

 

세션 제거

 

php 세션 제거

<?php
    session_destroy();
    session_unset();
    unset($_SESSION['id']);
?>

 

session_destroy() : 세션을 완전히 종료합니다. 세션의 모든 정보들을 삭제하고, 세션 ID 역시 삭제합니다.

 

session_unset() : $_SESSION 전역 변수의 배열을 모두 비웁니다.

session_unset()의 경우 메모리의 변수를 비우는 것으로 실제 세션파일의 내용은 그대로입니다.

 

unset() : 지정된 세션을 메모리에서 제거합니다.

메모리에서 제거하는 경우 실제 세션파일은 수정되지 않으므로
서버를 재시작하는 경우 세션 내부의 변수가 그대로 존재합니다.

 

세션 파일 위치

세션 파일 위치는 php.ini파일에 지정되어 있습니다.

/etc/php/8.1/apache2/php.ini