▶ 쿠키와 세션을 사용하는 이유

  • HTTP의 비연결성(Connectionless)과 비상태성(Stateless)을 보완하여 서버가 클라이언트를 식별하기 위해 사용합니다.
  • HTTP는 서버의 자원을 절약하기 위해 모든 사용자의 요청마다 연결과 해제의 과정을 거치기 때문에 연결 상태를 유지하지 않고(비연결성), 연결 해체 후에도 상태 정보를 저장하지 않습니다.(비상태성)  → 사용자를 식별할 수 없어 매번 새로운 사용자로 인식하게 됩니다. ex) 페이지를 이동할 때마다 로그인을 다시 해야 됨.

+ 비연결성(Connectionless) : 클라이언트가 요청(request) 한 후 응답(response)을 받으면 연결을 끊는다

+ 비상태성(Stateless) : 통신이 끝나면 상태를 유지하지 않는다.

 

 쿠키와 세션의 차이 -> 저장 위치, 보안, 속도

  • 가장 큰 차이점은 정보의 저장 위치입니다. 쿠키는 클라이언트에, 세션은 서버에 저장됩니다.
  • 보안면에서는 세션이 더 우수하며, 요청 속도는 쿠키가 세션보다 더 빠릅니다. 그 이유는 세션은 서버의 처리가 필요하기 때문입니다.
  • 쿠키는 클라이언트 로컬에 저장되기 때문에 변질되거나 스니핑 당할 우려가 있어 보안에 취약하지만 세션은 쿠키를 이용하여 sessionid만 저장하고 그것으로 구분해서 서버에서 처리하기 때문에 비교적 보안성이 좋습니다.
  • 쿠키와 세션은 비슷한 역할을 하며 동작 원리도 비슷합니다. 그 이유는 세션도 쿠키를 사용하기 때문입니다.

+ 세션을 사용하면 좋은데 왜 쿠키를 사용하는가?

-> 세션은 서버의 자원을 사용하기 때문에 사용자가 많을 경우 소모되는 자원이 상당합니다. 때문에 자원관리 차원에서 쿠키와 세션을 적절히 사용하여 서버 자원의 낭비를 방지하고 속도를 높일 수 있습니다.

 

▶ 쿠키(Cookie)

쿠키란

  • 클라이언트(브라우저) 로컬에 저장되는 Key와 Value로 구성된 String형태의 작은 데이터 파일
  • 쿠키의 구성요소 : 이름, 값, 유효시간, 도메인, 경로
  • 세션 관리 : 로그인, 접속 시간, 장바구니 등 서버가 알아야 할 정보들을 저장
  • 개인화 : 사용자마다 다르게 그 사람에 적절한 페이지를 보여줄 수 있다.
  • 트래킹 : 사용자의 행동과 패턴을 분석하고 기록한다

 

쿠키 사용 예

-> 사용자 편의를 위한 것, 지워져도 되고, 가로채이더라도 큰 지장이 없는 수준의 정보

  • 쇼핑몰의 장바구니 기능
  • ID 저장, 자동 로그인
  • 자동 완성, 팝업창 일주일간 다시 보지 않기
  • 최근 검색한 상품들을 광고에서 추천

 

▶ 세션(Session)

세션이란

  • 세션은 쿠키를 기반으로 하고 있지만, 사용자 정보 파일을 브라우저에 저장하는 쿠키와 달리 세션은 서버 측에서 관리합니다.
  • 각 클라이언트에게 고유 세션 ID를 부여한다.
  • 보안면에서 쿠키보다 우수하다. -> 사용자에 대한 정보를 서버에 두기 때문에
  • 사용자가 많아질수록 서버 메모리를 많이 차지하게 된다
  • 동접자 수가 많은 웹 사이트의 경우 서버에 과부하를 주게 되므로 성능 저하의 요인이 됩니다.

 

세션 사용 예

-> 사용자나 다른 누군가에게 노출되면 안 되는 중요한 정보

  • 로그인 유지
  • 보안상 중요한 작업을 수행할 경우

 

  쿠키(Cookie) 세션(Session)
저장위치 클라이언트 서버
저장형식 text Object
리소스(사용하는 자원) 클라이언트의 리소스 서버의 리소스
용량제한 클라이언트에 300개 쿠키 저장 가능
하나의 도메인 당 20개,
하나의 쿠키 당 4KB
제한없음
만료시점 쿠키 저장 시 설정
(설정 없을 시에는 브라우저 종료시 만료)
브라우저 종료 시 삭제
속도 세션보다 빠름 쿠키보다 느림
보안 세션보다 안좋음 쿠키보다 좋은
반응형

'cs지식 > CS' 카테고리의 다른 글

[CS] GET과 POST 비교  (0) 2021.05.26

DB에서 정보 조회를 경우에는 연결을 하고 쿼리문을 돌리고 연결을 끊게 된다.

이러한 작업보다 간단하게 데이터를 조회하는 방식으로 등장한 것이 쿠키와 세션이다.

클라이언트나 서버 둘 중 어디에 저장할건지에 따라 나뉘게 된다.

 

 

쿠키 클라이언트(ex) 크롬, 익스플로우 등등

브라우져 (크롬 쿠키 따로 / 익스플로우 쿠키 따로)로 저장을 한다.

홈페이지에 중복되는 내용을 쿠키에 저장하게 되면 변경사항만 받아오면 되기 때문에 새로고침할  업로드 속도가 빨라지게 된다. (요청할 때마다 다시 주는 것이 번거로우니까 가지고 있는 )

ex) 자동로그인,  게시글  달라지는 

※ css 변경  적용안되면 쿠키를 삭제해본다.

※ F12 application 탭에 쿠키정보 확인 가능

 

Session(셰션) 서버에 저장을 한다.

쿠키에 저장하기에 보안적으로 문제가 만한것을 저장한다. 창을 닫으면 셰션이 파괴 된다. 파괴되면 다시 쓰지 못한다. (마치 자유이용권을 잘라버리는 것과 같다.)

ex) 로그인 유무 판별, 로그인, 로그아웃 

세션은 쿠키와 달리 보안상 로그인 정보를 서버에 저장하여 사용자들의 로그인 정보에 대한 보안을 한층 업그레이드 할 수 있게 해줍니다.

 

PHP 세션에 사용자 정보를 저장하기 전에, 먼저 세션을 시작해야 합니다.

Note: session_start() 함수 <html> 태그 앞에 와야 합니다.

<?php session_start(); ?>



<html>

  <body>



  </body>

</html>

 

세션을 등록하기 위해서는 가장먼저 세션을 초기화 하여 세션을 생성하고, 현재의 세션 아이디를 활성화시키기 위해 session_start()함수를 사용한다.

PHP에서는 session_start() 함수를 이용하여 새로운 세션을 시작하거나, 기존의 세션을 다시 시작할 수 있습니다. session_start() 함수는 세션 아이디가 이미 존재하는지를 확인하고, 존재하지 않으면 새로운 아이디를 만듭니다. 만약 이미 존재하는 세션 아이디가 있을 때는 원래 있던 세션 변수를 다시 불러와서 사용할 수 있도록 합니다.

 

 

반응형

+ Recent posts