쿠키와 세션

All We Need is Data, itself !·2022년 1월 18일
0

Backend

목록 보기
3/3

HTTP 프로토콜 환경

Connectionless

비연결성
클라이언트가 요청을 한 후 응답을 받으면 연결을 끊어버리는 특징

Stateless

무상태성
통신이 끝나면 상태를 유지하지 않는 특성

HTTP 환경은 이 두개의 특징을 가지고 있으며, 따라서 연결을 한 후 응답을 끊으면 상태를 유지하지 않는다는 특징이 있다.
그런데 이렇게 된다면 쇼핑몰에서 페이지를 옮길 때마다 로그인을 새로 해야 한다는 단점이 존재한다.

따라서 쿠키와 세션을 사용해서 이를 방지하고자 한다.



쿠키(Cookie)

쿠키란 클라이언트가 어떠한 웹사이트를 방문할 경우, 서버에 의해 저장되는 작은 기록 파일

  • 서버는 쿠키를 헤더에 담아 response한다.
    • Headers=[Set-Cookie:"client-info", "password?"]

참고: https://tecoble.techcourse.co.kr/post/2021-05-22-cookie-session-jwt/

  • Key-Value 형식을 취하고 있다.

  • 쿠키는 클라이언트의 정보를 로컬에 저장했다가 다음번 request가 있을 때마다 쿠키를 요청 헤더의 Cookie에 담아 보낸다. -> 요청을 받은 서버는 쿠키를 통해 클라이언트를 식별할 수 있다.

  • 브라우저마다 쿠키의 형태가 달라 브라우저끼리 공유가 되지 않는다는 단점이 있음.

  • 쿠키가 그대로 노출되기 때문에 악용될 위험이 있음. (보안상의 취약성)

  • 쿠키가 너무 길면 네트워크에 무리를 줄 수 있어 쿠키의 길이에
    제한이 있다는 점

쿠키가 가지고 있는 정보
이름, 값, 유효시간, 도메인, 경로

참고: https://interconnection.tistory.com/m/74


세션(Session)

클라이언트로부터 로그인 요청을 받으면, 쿠키에 비밀번호와 같은 인증 정보를 담을 수 없음.

따라서 인증 정보는 세션에 저장하고, 서버는 세션 아이디와 같은 클라이언트 식별 정보를 쿠키에 담아 보냄.

아이디와 패스워드같은 인증 정보 자체가 노출되는 일이 없어지는 대신, 세션 아이디를 통해 해커가 클라이언트인 척 위장할 수 있다는 단점이 존재함.

세션 정보는 서버에서 보관하기때문에 서버의 메모리에 부담을 줄 수 있다는 단점이 있음.
즉, 동접자 수가 많으면 부하가 걸린다는 것

클라이언트가 요청을 보내면 서버에서 세션 아이디를 부여한다.


JWT 기반 토큰 인증

JWT 기반 토큰이란?
JSON Web Token의 약자, 쿠키/세션과 비슷하게 JWT 토큰을 헤더에 실어 클라이언트에게 보냄으로써 클라이언트를 식별함.

나머지는 여기 참고
https://tecoble.techcourse.co.kr/post/2021-05-22-cookie-session-jwt/


PHP에서의 쿠키와 세션에 대한 정보는 여기서 참고

https://m.blog.naver.com/jungmun256/222624352522

profile
분명히 처음엔 데린이었는데,, 이제 개린이인가..

0개의 댓글