-
쿠키와 세션 복습!엘리스트랙 2024. 2. 9. 13:26728x90
쿠키
쿠키는 클라이언트 측에서 서버로 보내는 작은 데이터 조각입니다. 웹 서버가 사용자의 웹 브라우저에 보내는 작은 텍스트 파일로, 사용자의 컴퓨터에 저장되며 웹 브라우저를 통해 접근하고 업데이트됩니다.
쿠키의 구조
- 이름: 쿠키의 이름입니다.
- 값: 쿠키의 값을 나타냅니다.
- 만료 날짜: 쿠키가 만료되는 날짜나 시간입니다. 이 값이 설정되지 않으면 브라우저가 닫힐 때 쿠키가 삭제됩니다.
- 경로: 쿠키가 유효한 URL을 지정합니다. URL이 이 경로를 포함하지 않으면 쿠키는 보내지지 않습니다.
- 도메인: 쿠키가 유효한 도메인을 지정합니다. 이 도메인이 쿠키를 설정한 도메인과 일치하지 않으면 쿠키는 보내지지 않습니다.
- Secure: 이 플래그가 설정되면, 쿠키는 HTTPS를 통해서만 전송됩니다.
쿠키의 사용
- 세션 관리: 로그인, 장바구니, 게임 점수, 또는 서버가 기억해야 할 어떤 정보든 저장할 수 있습니다.
- 개인화: 사용자 선호, 테마 등의 설정을 저장하여 사용자에게 맞춤형 콘텐츠를 제공할 수 있습니다.
- 추적: 사용자의 행동이나 방문한 페이지 등을 기록하고 분석할 수 있습니다.
쿠키의 보안
- Secure 쿠키: Secure 플래그가 설정된 쿠키는 HTTPS를 통해서만 전송됩니다. 이는 쿠키가 네트워크 상에서 도난당하는 것을 방지해줍니다. 즉, 쿠키 정보가 암호화된 연결을 통해서만 전송되므로 중간자 공격(man-in-the-middle attack)으로부터 안전합니다.
- HttpOnly 쿠키: HttpOnly 플래그가 설정된 쿠키는 JavaScript의 Document.cookie API를 통해 접근할 수 없습니다. 이는 쿠키가 크로스 사이트 스크립팅(XSS) 공격으로부터 안전하게 보호되도록 합니다.
- SameSite 쿠키: SameSite 속성은 쿠키가 같은 사이트에서만 전송되도록 합니다. 이는 크로스 사이트 요청 위조(CSRF) 공격을 방지하는 데 도움이 됩니다.
- 쿠키의 만료 시간 설정: 쿠키에 만료 시간을 설정함으로써, 쿠키의 생명 주기를 제한할 수 있습니다. 이는 오래된 쿠키가 공격자에게 노출되는 것을 방지하는 데 도움이 됩니다.
- 쿠키 값의 암호화: 쿠키 값이 민감한 정보를 포함하고 있는 경우, 이 정보를 암호화하여 보호할 수 있습니다.
세션
세션은 서버에서 클라이언트를 식별하기 위해 사용하는 기술입니다. 클라이언트가 서버에 연결하면 서버는 고유한 세션 ID를 생성하고 클라이언트에게 전달합니다. 클라이언트는 이후 요청에서 이 세션 ID를 함께 보내어 자신을 식별합니다. 이를 통해 서버는 클라이언트의 상태 정보를 유지할 수 있습니다.
세션의 사용
클라이언트는 이후 요청에서 세션 ID를 함께 보내어 자신을 식별합니다. 서버는 이 세션 ID를 통해 클라이언트의 세션을 찾아 사용자의 상태 정보를 유지합니다. 예를 들어, 사용자의 로그인 상태, 장바구니 항목, 게임 점수 등을 저장할 수 있습니다.
세션의 보안
- 세션 고정 공격(Session Fixation) 방지: 세션 고정 공격은 공격자가 피해자의 세션 ID를 고정하여 그 세션을 탈취하는 공격입니다. 이를 방지하기 위해, 로그인 이후에 새로운 세션 ID를 발급하는 것이 일반적입니다.
- 세션 탈취(Session Hijacking) 방지: 세션 탈취는 공격자가 네트워크 트래픽을 감시하여 피해자의 세션 ID를 탈취하는 공격입니다. 이를 방지하기 위해, 세션 ID를 HTTPS와 같은 안전한 채널을 통해 전송하는 것이 중요합니다.
- 세션 ID의 안전한 생성: 세션 ID는 무작위로, 예측할 수 없도록 생성해야 합니다. 이를 통해 공격자가 세션 ID를 예측하여 세션을 탈취하는 것을 방지할 수 있습니다.
- 세션의 안전한 저장: 서버는 세션 정보를 안전하게 저장해야 합니다. 예를 들어, 서버의 메모리나 데이터베이스 등 안전한 곳에 세션 정보를 저장하고, 필요한 경우 세션 정보를 암호화하여 저장합니다.
- 세션의 만료: 세션은 사용자가 로그아웃하거나 일정 시간 동안 활동이 없는 경우 만료되어야 합니다. 이를 통해 공격자가 오래된 세션을 이용하는 것을 방지할 수 있습니다.
쿠키와 세션 차이
- 저장 위치: 쿠키는 클라이언트(브라우저)에 저장되는 반면, 세션은 서버에서 관리됩니다.
- 생명 주기: 쿠키는 만료 시간이 명시적으로 설정되지 않으면 브라우저가 종료될 때까지 유지되며, 만료 시간이 설정된 경우 해당 시간이 지나면 삭제됩니다. 세션은 브라우저가 종료되면 종료되거나, 서버에서 세션 타임아웃 시간이 지나면 만료됩니다.
- 보안: 쿠키는 클라이언트에 저장되므로 민감한 데이터를 저장하기에는 보안상 취약할 수 있습니다. 반면, 세션은 서버에서 관리되므로 보안성이 더 높습니다. 하지만 세션은 서버의 메모리를 사용하므로, 많은 사용자가 접속하는 경우 서버의 부하를 증가시킬 수 있습니다.
- 사용 예시:
쿠키는 '로그인 상태 유지', '사용자의 관심사에 맞는 광고 표시', '최근 조회한 상품 정보 저장' 등에 사용됩니다.
세션은 로그인한 사용자의 정보를 저장하거나, 사용자별 장바구니 정보를 유지하는 등의 목적으로 사용됩니다.
728x90'엘리스트랙' 카테고리의 다른 글
2차 프로젝트 회원가입 구현! (1) 2024.02.25 2차 프로젝트 기획! (0) 2024.02.25 스프링 빈의 스코프와 생명주기 복습! (1) 2024.02.09 스프링 의존관계 복습! (0) 2024.02.06 스프링,빈 Validation 복습! (0) 2024.02.01