ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 쿠키 세션 기본 개념
    웹 기본지식 2020. 5. 13. 15:32

    1. HTTP의 특징과 쿠키와 세션을 사용하는 이유

    HTTP 프로토콜이 connectionless, stateless한 특성이 있기 때문입니다.
    connectionless
    클라이언트가 요청을 한 후 응답을 받으면 그 연결을 끊어 버리는 특징
    stateless
    통신이 끝나면 상태를 유지하지 않는 특징

    1. 개요

    • 공통점 : 사용자의 정보(데이터)를 저장할 때 이용된다.

    • 차이점 :

    • 쿠키 :
      1) 사용자의 로컬에 저장되었다가 브라우저가 요청시 왔다갔다하게 됨(보안에 취약)
      2) 세션과 달리 여러 서버로 전송이 가능함
      3) 세션이 브라우저 단위로 생성되어 브라우저 종료시 사라지는데 반해, 쿠키는 유효시간 설정을 할 수 있음. ex) 7일
      4) 클라이언트가 재요청시 웹페이지 요청과 함께 쿠키값도 전송 - 자동으로 서버에 전송

      • 쿠키의 제한
        클라이언트에 300개까지 쿠키저장 가능, 하나의 도메인당 20개의 값만 가질 수 있음. 하나의 쿠키값은 4KB까지 저장
        5) Response Header 에 Set-Cookie 속성을 사용하여 클라이언트에 쿠키 생성
        6) 만료시간이 있지만 파일로 저장되어서 브라우저를 종료해도 계속해서 정보가 남아 있을 수 있다.
        7) 서버에 요청시 속도가 빠름
    • 세션 :
      1) 서버에 데이터를 저장하여 쿠키에 비해 보안에 안전함
      2) 브라우저 단위로 생성됨 => 익스플로러를 켜고 크롬을 켜고 하면 각각 2개의 세션이 생성되는 것
      3) 브라우저를 종료할때까지 유지되는 상태 - 일정시간동안 같은 브라우저로부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 유지하는 기술
      4) 클라이언트가 Request 를 보내면, 해당 서버의 엔진이 클라이언트에게 유일한 ID를 부여하는데 이것이 세션ID.
      5) 서버의 자원을 사용하기 때문에 무분별하게 만들면 서버의 메모리가 감당할 수 없어질 수 있어 속도가 느려질 수 있다. - 비교적 느림

      세션 프로세스
      1) 클라이언트가 서버에 접속시 세션 ID를 발급
      2) 서버에서는 클라이언트로 발급해준 세션ID를 쿠키를 사용해 저장(JSESSIONID)
      3) 클라이언트가 다시 접속할때, JSESSIONID 를 이용해서 세션ID값을 서버에 전달

      즉, 세션을 구별하기 위해 ID가 필요하고 그 ID만 쿠키를 이용해서 저장. 쿠키는 자동으로 서버에 전송되므로 서버에서 세션아이디에 따른 처리를 한다.

    2. 세션과 쿠키를 이용한 자동 로그인 구현

    로그인에 성공했을 때 사용자 DB 테이블에 sessionId와 유효시간 속성에 값을 지정하는 겁니다. 그리고 쿠키에는 세션Id를 넣는다.
    "인터셉터"에서 해당 쿠키값이 존재하면 사용자 DB 테이블 내에서 유효시간이 아직
    남아 있으면서 해당 세션 Id를 가지고 있는 사용자 정보를 검색해 해당 사용자 객체를 반환하는 겁니다.

    요즘 추세

    세션은 사용자의 수 만큼 서버 메모리를 차지하기 때문에 요즘은 이런 문제들을 보완한 토큰 기반의 인증방식을 사용하는 추세입니다.

    그 중 JWT( JSON Web Token )라는 것 사용

    참고문헌

    https://interconnection.tistory.com/74 [쿠키 세션]

    반응형

    '웹 기본지식' 카테고리의 다른 글

    http status 값 정의  (2) 2020.05.14
    FTP 보안 프로토콜  (1) 2020.05.13

    댓글

Designed by Tistory.