쿠키는 서버가 사용자의 웹 브라우저에 저장하는 작은 텍스트 파일이다.
쿠키는 이름, 값, 만료일, 경로, 도메인 등의 정보를 포함하며, 이 정보는 사용자가 웹 사이트를 다시 방문할 때마다 서버에 전송된다.
쿠키를 사용하면 사용자의 선호 설정, 로그인 정보 등을 기억하거나 장바구니와 같은 상태 정보를 저장할 수 있다.
쿠키는 사용자가 이전에 웹사이트에서 입력했던 정보(아이디, 언어 설정 등)를 기억하게 해 주어 사용자 경험을 향상시키는데 주로 사용된다.
- 서버가 아닌 클라이언트에서 데이터를 저장하기 때문에 서버의 부하를 줄일 수 있다.
- 사용자 별로 개인화된 정보를 저장하고 이를 기반으로 사용자 경험을 개선할 수 있다.
보안성이 낮으며, 클라이언트 측에서 쿠키를 삭제하거나 변경할 수 있기 때문에 민감한 데이터를 저장하기에 적합하지 않다.
사용자의 브라우저에 저장공간이 한정적이기 대문에 큰 데이터를 저장하기 어렵다.
웹에서 세션은 클라이언트와 서버 간 네트워크 연결이 지속되는 동안 사용자의 상태를 유지하기 위한 방법이다.
즉, 사용자가 웹 사이트에 로그인할 때 세션을 시작하고, 로그아웃하거나 일정 시간 동안 활동이 없을 때 세션을 종료한다.웹은 기본적으로 상태를 유지하지 않는(stateless)통신 방식이기 때문에, 세션과 같은 기술이 필요하다.
세션을 통해 서버는 사용자가 페이지를 이동하더라도 그 사용자의 상태를 유지할 수 있다.세션 정보는 서버에 저장되며, 각 세션은 고유한 세션ID를 가지고 있다. 사용자가 로그인하면 서버는 세션을 생성하고, 그 세션ID를 사용자의 브라우저에 쿠키를 통해 전달한다.
사용자의 브라우저는 이후 요청마다 이 세션 ID를 서버에 보내, 사용자를 식별한다.
- 상태 유지 : 사용자의 정보와 설정, 로그인 상태 등을 유지할 수 있다. 이는 웹 서비스에서 중요한 기능으로, 사용자의 편의를 크게 높인다.
- 보안 : 세션 정보는 서버에 저장되므로, 클라이언트에서 직접적으로 접근하거나 수정하는 것이 어렵습니다.
- 대용량 데이터 : 서버에 저장되므로 대용량의 데이터를 저장할 수 있다.
- 서버 부하 : 세션 정보는 서버에 저장되므로, 많은 사용자가 접속하면 서버의 메모미를 많이 차지하게 된다. 이로 인해 성능이 저할될 수 있으며, 스케일링이 어려울 수 있다.
- 클라이언트 이동 : 사용자가 브라우저를 변경하거나 다른 기기로 이동하면 세션을 유지할 수 없다. 세션은 서버와 특정 클라이언트 사이의 연결을 유지하기 때문이다.
- 세션 하이재킹 : 세션ID가 공격자에게 노출되면, 공격자가 세션ID를 이용해 사용자를 가장할 수 있다. 이를 세션 하이재킹이라고 한다. 이를 방지하기 위해 HTTPS등의 기술을 사용해 세션ID를 안전하게 전송해야 한다.
Cookie와 Session은 웹 사이트가 사용자의 브라우저를 통해 사용자의 상태를 기억하고 추적하는 데 사용되는 기술이다.
이들은 HTTP의 stateless한 특성을 보완하기 위해 사용되며, 웹 사이트와 사용자의 상호작용을 개선하는데 도움을 준다.
Cookie | Session | |
---|---|---|
저장 위치 | 클라이언트(브라우저) | 서버 |
저장 형식 | 텍스트 형식 | 객체 형태 |
생명주기 | 직접 삭제 전까지 유지 | 서버와의 연결 종료까지 |
설명도 이상하고 코드도 이상한 글임에도 읽어주셔서 감사합니다. : )