TIL

쿠키, 캐시, 세션

Big Iron 2023. 5. 6. 23:59

평소에 인터넷을 사용하거나 팀 프로젝트를 진행할 때 쿠키와 캐시 그리고 세션에대해 자주 접하게 된다. 셋 다 사용자에게 편리함을 제공하며 사이트의 성능을 최적화 하는데 필요한 기능들이다. 하지만 서로 비슷한 내용인 것 같고 헷갈릴 수 있다 생각해 이번에 정리를 해보려 한다.

쿠키 (cookie)


사용자의 특정 정보를 사용자의 컴퓨터에 텍스트로 저장시킨 파일이다. 사용자의 로그인 정보 또는 설정 등이 포함되어 사용자에게 편리함을 제공한다.


  • 장점
    • 정보가 저장되어 사용자에게 편리함 제공.
    • 로그인 상태 유지 가능.
    • 사용자의 검색 및 내역을 추적할 수 있어 사이트 관리자에게 유용하다.
  • 단점
    • 저장 용량이 작게 제한되어 있다.
    • 클라이언트 측에 저장되기에 쿠키 도난과 조작당할 수 있기에 보안에 취약하다.
    • 개인정보 보호에 취약하다.

예를 들어 pc방이나 다른 공공장소에서 로그인할 때 쿠키를 사용한다면 사용자의 민감한 정보(아이디, 이름, 연락처, 로그인 정보 등)가 pc방 컴퓨터에 저장되어 해킹에 노출되기 싶다.


정보가 컴퓨터에 저장되는 것은 좋은 부분이나 위의 문제점들을 생각해 어떠한 정보를 저장할지 잘 구분해주면 좋다.


쿠팡이나 배달 어플의 장바구니를 예로 들 수 있는데 민감한 정보가 아닌 수정되거나 삭제되도 상관 없는 정보를 저장해주면 좋다.


세션 (session)


사용자의 데이터를 임시로 저장하기 위한 서버의 방법이며 사용자를 구분하기 위한 고유한 세션 ID가 생성, 할당되어 사용자의 브라우저로 전송, 세션 쿠키에 저장된다. 요청시 할당된 세션 ID의 동일 여부를 체크해 사용자를 인식, 유지하며 정해진 시간이 지나거나 로그아웃, 브라우저를 닫을 때 세션이 종료되며 정보가 사라진다.


  • 장점

    • 데이터가 클라이언트가 아닌 서버에 저장되어 쿠키보다 안전하다.
    • 쿠키보다 저장 용량이 크다.
    • 일정 시간동안 사용하지 않거나 로그아웃시 만료된다.
  • 단점

    • 트래픽이 많은 웹 사이트에는 서버에 저장되는 방식이 성능에 영향을 미칠 수 있다.
    • 브라우저를 의도치 않게 닫을 때 데이터가 손실될 수 있다.
    • 서버측의 로직이 쿠키에비해 복잡하다.

사용자가 로그인하면 서버는 세션을 생성하고 고유한 세션 ID를 할당해 로그인 상태를 저장한다.


캐시


자주 사용하는 정적 데이터 or CSS, JS 등 용량 큰 파일이나 홈페이지 관리자가 설정한 값의 복사본을 브라우저에 저장시킨 것.


  • 장점

    • 데이터를 가져오거나 처리하는 시간을 최소화해 사이트 성능을 높여준다.
    • 서버 부하를 줄여준다.
    • 사용자에게 빠른 속도를 보여줄 수 있다.
  • 단점

    • 원본 데이터 수정시 캐시가 업데이트되지 않으면 수정하기 전의 데이터를 제공한다.
    • 데이터 불일치, 주기적 업데이트를 설정하기 위한 캐시 관리 전략이 필요하다.

쿠키와 세션은 사용자의 데이터를 관리하는데 도움을 줄 수 있고, 캐싱은 사이트의 성능에 도움이 된다. 그렇다면 보안과 성능의 장단점이 각각 있는 쿠키와 세션을 같이 사용하면 더 좋지 않을까? 라는 생각이 든다.


예를 들어 로그인 등의 민감 정보를 관리하는 것은 세션이 처리하고, 간단한 데이터를 관리할 때는 쿠키를 사용해 보안과 성능 두 가지를 챙겨갈 수 있을 것 같다.

'TIL' 카테고리의 다른 글

[회고] 프로젝트를 마치며..  (0) 2023.05.13
[쿼리] JPA & JPQL & NativeQuery  (0) 2023.05.11
[자료구조] 스택 & 큐  (0) 2023.05.05
데이터 정규화  (0) 2023.05.04
코드 리팩토링  (0) 2023.05.01