새소식

반응형
250x250
💻 Computer Science/📡 Network

[네트워크] 쿠키(cookie), 세션(session)

  • -
728x90
반응형

🍪 쿠키 (Cookie)

◾ 사용자가 접속한 사이트의 서버에서 사용자 컴퓨터에 저장하는 데이터

 

1️⃣ 클라이언트가 페이지 요청

2️⃣ 웹 서버가 쿠키 생성

3️⃣ 생성한 쿠키에 정보 담아 클라이언트에게 HTTP 화면과 같이 돌려줌

4️⃣ 받은 쿠키 클라이언트의 로컬 PC에 저장

5️⃣ 서버에 재요청 / 동일 사이트 재방문 시 요청과 쿠키 함께 전송

 

◾ 저장 정보

    ◽ 이름, 값, 만료일(저장 기간), 경로

◾ 사용 이유

    ◽ HTTP의 무상태성과 비연결성

     ㄴ서버는 리소스를 아끼기 위해 클라이언트 상태를 가지고 있지 않고 클라이언트가 요청 시 모든 정보를 담아 보냄 / 클라이언트와 한 번 연결 후 연결을 종료함

     ㄴ때문에 웹사이트는 사용자를 구별할 수 없고 사용자는 매번 번거로운 인증 절차를 진행해야 했음

     ㄴ따라서 간단한 사용자 정보를 클라이언트 측에 저장하여 HTTP의 단점을 해

◾ 저장 용량

    ◽ 클라이언트 : 300개

    ◽ 하나의 도메인 : 20개

    ◽ 하나의 쿠키 : 4KB

 

◾ Session cookie

    ◽ 세션 동안만 저장되고 사라지는 쿠키

◾ Persistent cookie

    ◽ 하드 디스크에 저장되는 쿠키

    ◽ 웹 페이지 접속할 때마다 서버에 전송

◾ Secure cookie

    ◽ 암호화된 쿠키

◾ HTTP Only cookie

    ◽ 자바스크립트 같은 비HTTP API의 접근을 제한하는 쿠키

 

◾ 자동 로그인

    ◽ 쿠키를 통해 로컬에 로그인 정보를 저장하고 서버에 해당 정보 전송해 사용자 인증

◾ 하루동안 보지 않기

    ◽ 쿠키에 만료일 설정해 보고싶지 않은 정보를 설정

◾ 최근 검색 리스트

    ◽ 쿠키에 최근 검색한 정보 저장해 보여줌

 


🖥  세션 (Session)

◾ 클라이언트와 서버 간의 연결 상태

    ◽ 클라이언트가 웹사이트에 접속해 해당 창을 닫기 전까지의 상태

 

 

◾ 저장 정보

    ◽ 쿠키 정보 + 각 클라이언트에 고유 세션 ID 부여

◾ 저장 용량

    ◽ 제한 없음

 

1️⃣ 클라이언트가 페이지 요청

2️⃣ 웹 서버가 클라이언트의 Request-Header 필드 쿠키 확인, 클라이언트가 세션 ID를 전송했는지 확인

3️⃣ 세션 ID 존재하지 않을 시 세션 ID 생성해 클라이언트에게 전송

4️⃣ 받은 세션ID 클라이언트의 쿠키에 저장

5️⃣ 서버에 재요청 / 동일 사이트 재방문 시 요청과 쿠키 + 세션ID 함께 전송

6️⃣ 전달받은 세션ID로 세션에 있는 클라이언트 정보를 가지고 요청 처리 후 응답

 

◾ 화면 이동 시 로그인 유지

 

📋 요약

  쿠키(Cookie) 세션(Session)
저장 위치 클라이언트 로컬 PC 웹 서버
저장 형식 text object
사용 자원(리소스) 클라이언트 리소스 서버 리소스
용량 제한 클라이언트당 300개
도메인당 20개
쿠키당 4KB
없음
속도 빠름 느림
보안 취약 우수
만료 시점 저장 시 만료 시점 설정 가능
(디폴트 : 브라우저 종료 시)

 

보안이 취약한 쿠키를 사용하는 이유

 

◾ 서버에 저장되는 세션을 사용하기에 서버 자원에 한계가 있고, 속도가 느려질 수 있기 때문에 자원 관리 면에서 쿠키와 세션을 적절한 요소에 병행 사용하여 서버 자원의 낭비를 방지하고 웹사이트 속도를 높일 수 있다.

728x90
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.