로그인 기능을 구현하다보니 로그인 상태를 유지해야할 필요가 있어 쿠키와 세션에 대해 찾아보게 되었다.
찾아보니 큰 틀로 간단하게 요약하자면
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 |
---|