일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 웹개발
- csrf
- cors
- 쿠키
- Error based sql injection
- lord of sql injection
- 게시판 만들기
- php
- CTF
- union sql injection
- 모의해킹
- sql injection point
- css
- sql injection
- Reflected Xss
- MySQL
- 로그인
- Python
- blind sql injection
- JWT
- lord of sqli
- JS
- Los
- cookie 탈취
- file upload
- 세션
- XSS
- 과제
- 로그인페이지
- Cross Site Request Forgery
- Today
- Total
Almon Dev
모의해킹 공부 정리 13일차 (쿠키와 세션) 본문
쿠키(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
'모의해킹 > 모의해킹' 카테고리의 다른 글
모의해킹 공부 (4주차 강의 정리) (2) | 2024.11.07 |
---|---|
JWT(JSON Web Token)에 대한 공부 (1) | 2024.11.02 |
모의해킹 공부 (3주차 강의 정리) (0) | 2024.10.31 |
모의해킹 공부 정리 9일차(미니 미션) (0) | 2024.10.25 |
모의해킹 공부 정리 8일차 (강의 정리) (0) | 2024.10.24 |