목차


 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에 저장됨

 

"del"이 삭제됨

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

Link

 

'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

+ Recent posts