일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- overthewire
- php
- OS Command Injection
- php 로그인 페이지 만들기
- 파일 업로드 취약점
- Authentication
- file upload
- Leviathan
- FTZ
- php To Do List
- ssrf
- War Game
- Cookie
- sql injection
- Reconnaissance
- privilege escalation
- SQLi
- Cryptography
- php file upload
- access control
- active recon
- tryhackme
- THM
- Server Side Request Forgery
- over the wire
- active reconnaissance
- php login page
- Recon
- php 파일 업로드하기
- BANDiT
- Today
- Total
R's Hacking Daily Log
php Cookie 본문
Step :: Cookie
Session에 연이어 Cookie에 대해 살펴보도록 하자. 여기서도 역시 개념적인 내용은 생략할 예정!
Cookie를 사용하기 위해 Cookie 생성은 어떻게 할 수 있는 지부터 알아보자.
<?php
setcookie('myCookie', 'Ryu', time() + 3600);
echo $_COOKIE['myCookie'];
echo "<br/>";
Cookie를 생성하기 위해서는 setcookie 함수를 사용할 수 있다.
setcookie 함수에 인수로 들어가는 값들은 [쿠키 이름, 쿠키 값, 지속 시간, 경로, 도메인, 보안, httponly]이다.
각각의 값이 의미하는 바는 다른 글을 참고하길 바란다.
다시 돌아와서, 위의 코드에서는 쿠키 이름, 쿠키 값, 지속 시간만 설정해서 쿠키를 만들었다.
그 결과로 myCookie라는 이름의 쿠키는 Ryu를 값으로 가지게 된다.
지속 시간 같은 경우, 현재 시간을 기점으로 얼마 동안 이 쿠키를 가지고 있을 것인지를 나타내는 데
time()으로 현재 시간을 구하고 지속시킬 시간을 초 단위로 입력한다.
cookie 값을 참조하기 위해서 session과 동일하게 글로벌 변수 $_COOKIE에 접근한다.
결과를 확인해 보면
myCookie 값인 Ryu가 출력되는 걸 확인할 수 있다.
그렇다면 Cookie를 수정하기 위해서는 어떻게 해야 할까?
<?php
setcookie('myCookie', 'Ryu', time() + 3600);
echo $_COOKIE['myCookie'];
echo "<br/>";
$_COOKIE['myCookie'] = 'Kim';
echo $_COOKIE['myCookie'];
위에서 작성한 코드에 이어 글로벌 변수 $_COOKIE를 통해 myCookie 값을 Kim을 수정했다.
setcookit 함수로 myCookie를 생성했을 때와 쿠키 값이 달라졌을지 확인해 보면
성공적으로 값을 수정된 걸 볼 수 있다.
setcookie를 통해 쿠키를 생성했다면 이후에는 $_COOKIE[COOKIE_NAME] = VALUE 형태로
쿠키 값을 수정할 수 있다.
마지막으로 쿠키를 삭제하는 방법에 대해 살펴보자.
<?php
setcookie('myCookie', 'Ryu', time() + 3600);
echo $_COOKIE['myCookie'];
echo "<br/>";
$_COOKIE['myCookie'] = 'Kim';
echo $_COOKIE['myCookie'];
unset($_COOKIE['myCookie']);
echo $_COOKIE['myCookie'];
쿠키를 삭제하기 위해서는 setcookie 함수 & unset 함수를 사용할 수 있다.
위의 코드에서는 unset 함수를 사용했다.
unset 함수에 삭제하고자 하는 쿠키 이름을 $_COOKIE[COOKIE_NAME] 형태로 전달해 주면 된다.
setcookie 함수를 통해 쿠키를 삭제하고자 할 때는 지속 시간 값에 현재 시점보다 이전 시점을 설정하면 된다.
setcookie('myCookie','',time()-1);
time() 값에 마이너스를 하면 현재 시점보다 이전 시점의 값이 되므로 해당 쿠키는 소멸되는 것!
이때 마이너스 값이 얼마가 되는지는 별로 중요하지 않다.
-1이든 - 100이든 현재 시점보다 이전 시점이기만 하면 된다.
코드의 결과를 확인해 보면
unset 함수로 myCookie를 삭제한 후 echo로 출력한 부분이 에러가 난다.
myCookie를 삭제했기 때문에 해당 값을 참조할 수 없어 에러가 발생하는 것이다.
이를 통해 myCookie가 제대로 삭제되었다는 걸 알 수 있다.
[create_cookie.php]
<?php
$cookie_value = 'Ryu';
$cookie_name = 'myCookie';
setcookie($cookie_name, $cookie_value, time() + 86400*30)
?>
<html>
<head>
<title>Create Cookie</title>
</head>
<body>
<h1>Cookie Example</h1>
~쿠키 만들기~
쿠기 값은 <a href="./result_cookie.php">여기에서 확인</a>!!
</body>
</html>
setcookie 함수를 통해 쿠키를 생성해 준다.
생성한 쿠키 값을 확인하기 위해 링크가 걸린 "여기에서 확인" 문구를 클릭해 준다.
[result_cookie.php]
<html>
<head>
<title>Result Cookie</title>
</head>
<body>
<h1>Cookie Example</h1>
쿠키 값은 <?php echo $_COOKIE['myCookie']; ?>
</body>
</html>
링크가 걸려 result_cookie.php는 $_COOKIE를 참조해 쿠키 값을 알려주는 페이지이다.
create_cookie.php에 접속해 링크가 걸린 문구를 클릭하면 결과적으로 쿠키 값을 볼 수 있게 되는 흐름이다.
지금까지 cookie를 생성 & 수정 & 참조 & 삭제하는 법에 대해 살펴보았다.
Session과는 다르게 cookie는 session_start()와 같은 함수를 기재해두지 않아도 사용이 가능하다.
또한 cookie는 생성할 때 지속 시간을 설정해서 만드는 반면 session은 php.ini에 설정된 시간 동안 지속된다.
쿠키는 client 쪽에 저장되며 저장된 쿠키 값을 확인할 수 있기 때문에
보안 상의 목적으로 사용하기에는 부적합하다고 할 수 있다.
그렇다 보니 session은 서버 측에서 정보를 저장한다는 부분이 cookie와의 차이점 중 하나라 할 수 있다!!
'PHP' 카테고리의 다른 글
php - HTML Form으로 데이터 전송하기 (2) (0) | 2023.07.24 |
---|---|
php - HTML Form으로 데이터 전송하기 (1) (0) | 2023.07.23 |
php Session (0) | 2023.07.21 |
php 예외 처리 (0) | 2023.07.19 |
php 객체 지향 프로그램 (6) (0) | 2023.07.18 |