기타/Django

[Django] 쿠키와 세션

가죽방패 2023. 6. 29. 14:14

로그인 기능을 구현하다보니 로그인 상태를 유지해야할 필요가 있어 쿠키와 세션에 대해 찾아보게 되었다.

 

찾아보니 큰 틀로 간단하게 요약하자면

COMM: 쿠키, 세션 둘다 로그인 정보와 같이 유지되어야 하는 정보를 저장하기 위한 목적으로 적용한다

DIFF: 쿠키는 개인PC(브라우저)저장, 세션은 서버에 저장 된다는 점이다

 

HTTP 통신 방식의 특징을 안다면 사용하는 이유를 알 수 있는데 이는 다음 포스팅으로 적어 좀 더 자세히 다뤄보겠다.


쿠키

- 사용자가 웹 사이트 방문시, 서버에서 사용자의 PC에 저장하는 작은 기록 정보 파일

필요시 정보 참조 혹은 재사용이 가능하다.

 

특징

1. 이름, 값, 저장기간(만료일), 경로 정보로구성

2. 클라이언트에 총 300개의 쿠키 저장 가능

3. 하나의 도메인 당 20개의 쿠키 저장 가능

4. 하나의 쿠키는 4KB(4096byte)까지 저장 가능

 

적용되는 예시로는 로그인시 "아이디 저장", "비밀번호 저장" 이 있고, "오늘 이 창 다시보지 않기" 같은 기능이다.

 

세션

- 일정 시간 동일 사용자(브라우저)로 들어오는 요구를 동일한 상태로 보고 유지 시킴(종료시 초기화)

 

특징

1.  서버에 컨테이너 상태 유지 정보를 저장

2. 웹 서버로 저장되는 쿠키 = 세션 쿠키

3. 브라우저가 닫히거나 세션 만료가 되면 삭제가 되어, 보안이 좋음

4. 저장 데이터 제한 X (용량 제한은 서버 한계치까지)

5. 각 클라이언트에 고유 세션 ID 부여

 

적용 예시로는 화면 이동(다른 사이트 이동 등)을 하더라도 로그인 유지 됨

 

그래서 무슨 차이가 있는데?

  쿠키(Cookie) 세션(Session)
저장 위치 클라이언트(사용자 PC) 서버
저장 형식 Text 형식 Object
만료 기준 브라우저 종료 여부 관계 없이,
만료시점까지
원칙적으로 브라우저 종료시 삭제,
장시간 켜둘 시 지정된 기간 뒤 삭제
리소스 클라이언트(사용자 PC) 사용 서버 리소스
속도 쿠키 > 세션
보안 쿠키 < 세션

 

세션은 서버에 의존하기 때문에 자원과 속도의 한계가 있지만 보안의 우수성이 있고 쿠키는 보안은 조금 떨어지더라도 속도와 자원의 한계성이 거의 없다는 장점이 있다. 두 기능을 병행하며 사용하면 훌륭한 웹사이트를 만들 수 있을 것이다.

 

그날은 언제 올까...?

'기타 > Django' 카테고리의 다른 글

[Django] 기존 DB 장고와 연결/연동 하기  (0) 2023.06.27