본문 바로가기

개발/PHP

PHP setCookie 사용법(보안, secure, httponly)

반응형

PHP에서 cookie를 사용하는 방법을 알아봅니다. 자꾸 까먹어서..😴

 

기본 명령어

setcookie('cookie_name', 'value', 'expire', 'path', 'domain', 'secure', 'httponly');
  • cookie_name (string) : 쿠키 이름(변수라고 생각하면 쉬울 것 같네요.)
  • value (string) : cookie_name에 들어갈 값(cookie_name이 변수라고 생각하고 여기에 들어가는 값)
  • expire (int) : 쿠키가 유지 되는 시간
  • path (string) : 쿠키를 적용 할 경로
  • domain (string) : 쿠키 사용을 허용할 도메인
  • secure (bool) : https에서만 사용할 수 있도록 설정
  • httponly (bool) : 스크립트에서 쿠키 정보를 못 보게 하기

 

 

 

기본 설정

// ① 하루만 사용
$value = 'tistory';
setcookie('playon', $value, time() + 86400, '/');


// ② https 에서만 사용 할 수 있게
$value = 'tistory';
setcookie('playon', $value, time() + 86400, '/', '', true);


// ③ 스크립트에서 안보이고 http 에서만 사용 할 수 있게
$value = 'tistory';
setcookie('playon', $value, time() + 86400, '/', '', true, true);

① : 일반적으로 사용 할 수 있는 설정

② : https 에서만 사용할 수 있게 설정

③ : httponly 로 사용하게 설정

 

③ 으로 설정하면 자바스크립트에서 쿠키를 볼 수 있는 document.cookie를 사용해도 값이 나오지 않습니다.

XSS 공격으로부터 나름 방어가 가능하지요.

근데 브라우저 개발자도구 > 애플리케이션에서는 나와서 왜 나오는지 한참 구글링 했지만 거긴 그냥 나오나 봐요 

보안적으로 좋아 이걸 사용해야겠습니다.

 

 

 

 

쿠키 사용하기

// $_COOKEI['쿠키이름'] 방법으로 사용
$popup = $_COOKIE['playon'];

echo $popup;
// 결과 : tistory

기본 설정에서 playon 쿠키이름에 tistory를 넣어서 출력은 tistory가 출력됩니다.

 

 

 

 

쿠키 삭제하기

// 쿠키 하나만 삭제하기
setcookie('playon', '', time() - 86400, '/');

// 등록된 모든 쿠키 삭제하기
foreach ($_COOKIE as $cookiename => $value) {
  setcookie($cookiename, '', time() - 86400, '/');
}

쿠키 삭제는 쿠키 이름에 빈 값을 넣고 만료시간을 지나게 설정해서 삭제합니다.

 

 

 

반응형

'개발 > PHP' 카테고리의 다른 글

Google reCAPTCHA v3 적용하기  (1) 2019.07.04
define(): 상수의 정의  (0) 2019.06.05
비밀번호 암호화 확인 password_verity  (1) 2018.10.26
비밀번호 암호화 password_hash  (0) 2018.10.26
PHP 에러를 표시하기  (0) 2017.06.12