[WEB] Cookie & Session

Profile-exe·2021년 7월 28일
0

web

목록 보기
2/11
post-thumbnail

웹의 통신 프로토콜인 HTTPconnectionless, stateless 특성을 가진다. 이러한 특성 상 서버와 클라이언트가 통신할 때 계속해서 인증을 진행해야 한다는 단점이 있다.

이러한 단점을 개선하기 위하여 쿠키(Cookie)세션(Session)을 이용한다.


1. Connectionless & Stateless

1-1. Connectionless - 비연결

실제 요청을 주고 받을 때만 연결을 유지한다. 즉, 클라이언트의 대한 요청을 서버가 응답한 후 네트워크 연결을 끝맺는다

  • 장점 : 서버의 부하와 자원 소비를 최소화할 수 있으며 여러 클라이언트와의 접속이 원활해진다.

  • 단점 : 연결이 끊어지고나서 새로 연결될 때 TCP/IP 연결을 새로 맺어야 하므로 3-way handshake에 따른 오버헤드가 존재한다.

1-2. Stateless - 무상태

요청에 대한 응답이 끝난 후 네트워크 연결을 끝맺을 때 상태를 유지하지 않는다.

  • 장점 : 요청에 대해 응답하는 서버를 바꾸어도 요청에서 필요한 데이터를 모두 전송하므로 서버 확장에 용이하다.

  • 단점 : 요청으로 서버에 보내는 데이터의 양이 많아진다. 또한 서버와 연결될 때마다 인증을 다시 해주어야 한다.


웹 브라우저를 통해 사용자가 서버에 요청을 하면 브라우저는 브라우저에 저장되어 있는 쿠키를 Request Header에 추가하여 서버로 전송한다.

  • 쿠키를 통하여 서버는 사용자를 식별할 수 있다. 서버에 요청을 할 때, 서버는 세션 아이디(Session ID)를 할당하여 응답 시 브라우저로 다시 전달한다. 브라우저는 이를 쿠키로 저장한다.
  • 보안 위협이 없는 데이터에 한해서 서버 대신 브라우저에 저장하여 서버의 자원을 절약할 수 있다.

  • 페이지가 변경되어도 사용자의 정보를 계속해서 쿠키를 통해 서버에 전송하므로 사용자 인증이 유지될 수 있다.

  • 보안에 취약하다. 인증 상태를 쿠키에 저장하게 되면 보안이 취약한 쿠키 특성 상 쿠키를 조작하여 임의의 사용자로 인증할 수 있게 된다.

  • Request Header에 실어서 보내므로 쿠키의 크기가 커진다면 네트워크의 부하가 커지게 된다.

  • 저장할 수 있는 개수와 용량이 제한되어 있다. => 총 300개 / 도메인 당 20개 / 쿠키 하나 당 4KB(4096Byte) 까지 저장 가능


3. Session

세션은 서버에 저장한다. 데이터를 서버에 저장하고 이에 해당하는 Session ID를 만들어서 응답하면 브라우저는 Session ID를 쿠키에 저장한다.

쿠키는 로컬(클라이언트)에 저장하고 세션은 서버에 저장한다고 할 수 있다.

3-1. Session 작동 원리

  • 클라이언트가 서버에 요청했을 때 클라이언트에 대한 데이터를 서버에 저장하고 세션 아이디를 만들어 응답한다.

  • 브라우저는 세션아이디를 쿠키에 저장하고 다시 요청 시 세션 아이디를 서버에 전달하면 서버는 이에 해당하는 데이터로 인증 상태를 확인한다.

3-2. Session 장점

  • 정보 자체가 서버에 저장되어있어 쿠키에 비해 비교적 안전하다.

  • 용량 제한이 없기 때문에 서버의 용량이 충분하다면 많은 데이터를 저장할 수 있다.

3-3. Session 단점

  • 서버에 저장하므로 Session의 양이 많아질수록 서버에 부하가 커진다.
profile
컴퓨터공학과 학부생

0개의 댓글