목차
Session, Cookie, Token의 사용 이유
- HTTP 통신은 Request -> Response가 종료되면 클라이언트와 서버간에 연결이 끊김
따라서, 현재 누가 요청한 것인지 알기위해서 Session, Cookie, Token을 사용 해야함
Session
- 세션은 필요한 데이터를 서버에 저장하는 것
- 세션은 서버에 저장하기 때문에 유저가 늘어날 수록 서버 부하가 증가
- 세션에는 클라이언트를 식별 할 수 있는 Session Id와 정보를 저장하고,
쿠키에는 Session Id만 저장
$user_id = "php506";
$user_pw = "506";
// session명 지정, 지정하지 않으면 "PHPSESSID"로 지정됨, session_start 전에 선언
session_name( "Kim" );
// session 시작
session_start();
// -------------------
// 유저 인증 작업 필요, 지금은 생략( 넘어온 id와 pw가 허용범위 내인지 확인 후, db검색 )
// -------------------
// session에 데이터 저장
$_SESSION[ "id" ] = $user_id; // $_SESSION[ "id" ] : 원래는 id로 하지않고, 보안 규정에 따라 네이밍
$_SESSION[ "del" ] = "delete";
// session명을 지정해 줬을 경우 사용전에도 session명을 지정해 줘야함
session_name( "Kim" );
// 사용전 항상 session_start();
session_start();
var_dump( $_SESSION );
var_dump( session_id() ); // sessionID를 반환
var_dump( $_COOKIE ); // 세션을 시작하면 자동으로 sessionId가 cookie에 저장됨
session_name( "Kim" );
session_start();
// 세션 파기
// 서버에 저장된 sessionID를 파기
session_destroy();
// session 정보 삭제( session이 파기되는것은 아님 ) : 세션 ID는 남겨두고 그 외의 정보들을 삭제
session_unset();
// session 특정 요소를 삭제
unset( $_SESSION[ "del" ] );
Cookie
- 쿠키는 필요한 데이터를 클라이언트의 브라우저에 저장하는 것입니다.
- 클라이언트의 브라우저에 저장하는 것이므로 보안이 매우 취약
- 서버는 클라이언트의 요청에 대한 응답을 할 때,
클라이언트 측에 저장하고 싶은 정보를 Response Header에 보내 쿠키에 저장
이후 클라이언트가 재요청 할 때 저장된 쿠키를 Request Header에 담아 서버에 요청
// cookie 작성
// string 형태만 저장할 수 있음
// setcookie( "이름", "값", "유효기간(시간)" );
setcookie( "name", "Kim", time() + 30 ); // 현재 + 30초
setcookie( "age", "26", time() + 300 );
// cookie 삭제 방법
setcookie( "age", "", 0 );
// cookie 사용법
var_dump( $_COOKIE );
Token
- 세션 기반 인증에서 서버 부하의 단점의 부담때문에 토큰기반의 인증 개념이 생겨남
- 최초 1회만 유저의 정보를 인증하고, 인증한 정보를 암호화 하여 클라이언트에 저장
이후에는 해당 토큰이 유효한지만 체크하여 유저 인증을 함
- Web 환경에서는 JWT방식이 많이 사용되고 있음
Github
'PHP > PHP_ex' 카테고리의 다른 글
OOP (0) | 2023.05.11 |
---|---|
try-catch (0) | 2023.04.04 |
fnc DB connect (0) | 2023.04.03 |
PDO (0) | 2023.04.03 |
prepared_statement (0) | 2023.04.03 |