Computer Science/CS Knowledge

Cache / Cookie / Session

무니화니 2024. 2. 14. 19:04

캐시 (Cache)란 이전에 사용한 데이터를 보관하는 사용자 저장 공간이다. 웹 사이트, 앱 등에서 재사용할 수 있는 데이터를 캐시에 저장하여 서버에 재요청 시 시간과 비용을 절약할 수 있다. 캐시는 원래 컴퓨터의 처리 속도를 빠르게 하기 위하여, 연산의 결괏값과 재사용할 데이터를 CPU의 캐시메모리에 저장하여 RAM와 CPU의 속도의 차이를 줄이는 것을 의미하였다. 현재 이 글에서 다루는 캐시는 컴퓨터 아키텍처에서의 캐시가 아닌, 웹과 앱에서의 캐시이다.

사용자가 웹 서버에 데이터를 요청할 때, 사용자의 캐시에서 캐시 데이터를 찾는다. 만약 캐시에서 데이터가 없거나, 만료되었으면, 기존 방식대로 서버에 정보를 요청하는데, 이를 캐시 미스 (Cache Miss)라고 한다. 만약 캐시에서 사용 가능한 데이터가 존재하면 캐시 히트 (Cache HIt)라고 한다. 캐시 히트인 경우, 재검사 설정이 ON으로 되어있는 경우, 해당 데이터가 최신 버전인지 서버에 요청을 하고, 수정 날짜와 캐시 버전 번호를 고려하여 캐시 내에 최신 데이터를 사용하게끔 하고, 만약 캐시 버전 번호와 수정 날짜가 일치하지 않는 현상이 일어난다면 서버에 결국 데이터를 요청해야 한다. 만약 재검사 설정이 OFF이면, 다른 검사가 요구되지 않고 바로 캐시 데이터를 응답한다. 이후 사용자에 캐시에 데이터를 저장하고, 사용자에게도 응답한다.

 

쿠키는 http의 무상태 (Statelessness)와 비연결성 (Connectionlessness)때문에 서버가 기억을 할 수 없는 사용자의 정보를 알기 위해서 사용자에게 저장하는 문자열 파일이다. 4KB의 문자열로, 도메인당 50개까지 지원하며, 3000개의 쿠키가 브라우저마다 저장 가능한다고 한다. 유효 날짜와 만료 시간이 정해져 있다.

HttpOnly (Http에서만 쿠키 사용가능 -> XSS (Cross Site Scripting) 쿠키 탈취 방지.)

Samesite (다른 도메인에 쿠키 전송 허용 설정.) -> CSRF 공격 방지.

*XSS: JS와 같은 스크립트 코드를 삽입하여 개발자가 고려하지 않은 기능을 자동으로 작동하게 하는 공격. 

*CSRF: Cross-Site Request Forgery. 사이트 간 요청 위조. 웹사이트가 신뢰하는 사용자로부터 권한이 없는 요청을 전송한다. 

 

다양한 쿠키의 종류가 있다.

퍼스트 파티 쿠키: 쿠키의 도메인 == 접속한 도메인이 일치

세션 쿠키= 세션에서 사용자의 세션 ID를 지니는 쿠키. 브라우저 종료 시 사라짐.

보안 쿠키=https로 암호화하여 사용자와 서버가 주고받는 쿠키.

서드 파티 쿠키 = 사용자가 접속한 사이트 정보를 얻어서 광고를 맞춤 제공할 때 사용되는 쿠키.

 

 

세션 (Session)은 사용자가 사이트에 로그인하였을 때 일정 시간 동안 서버에서 사용자에 대한 정보를 기록, 관리하는 서버 저장 공간이다. 세션ID를 사용자와 서버가 주고 받고, 세션 ID가 중간에 탈취당해도 세션 ID만 가지고는 사용자의 개인 정보를 파악할 수 없고, 일정 시간이 지나면 사라진다는 장점 때문에 보안성이 좋다. 또한, 서버에서 사용자 접속을 관리할 때 용이하게 사용된다. 하지만 서버가 세션을 관리하기에 사용자의 수가 많아질 수록 과부하가 발생될 수 있고, 여러개의 서버를 사용하면 (로드 밸런싱, Load Balancing) 여러개의 서버가 공유해야 하기에 문제가 발생될 여지가 잇다. 

'Computer Science > CS Knowledge' 카테고리의 다른 글

OSI, TCP/UDP  (0) 2024.02.18
MVC  (0) 2024.02.15
CSR, SSR  (0) 2024.02.14
반응형/적응형 웹 , DOM, 크롤링 (robots.txt)  (0) 2024.02.11
WAI-WARA , WAS, On-Premise, UI / UX  (0) 2024.01.20