cs 공부

쿠키, 세션의 개념과 차이를 설명해보세요

늘곰's 2023. 12. 11. 18:18

1. 쿠키

개념: 쿠키는 클라이언트의 로컬 브라우저에 저장되는 작은 데이터 조각으로, 주로 사용자의 상태 정보를 기록하고 유지하기 위해 활용

동작 방식: 서버가 클라이언트에게 쿠키를 전송하면, 이후 해당 도메인의 모든 요청에서 클라이언트는 쿠키를 함께 전송

특징: 쿠키는 클라이언트 측에 저장되기 때문에 보안에 취약할 수 있습니다. 또한, 만료 기간을 설정하여 일정 기간 동안 유지

2. 세션

개념: 세션은 서버 측에 사용자의 상태 정보를 저장, 일반적으로 서버 메모리나 데이터베이스를 사용하여 상태를 유지

동작 방식: 클라이언트가 서버에 접속하면 서버는 고유한 세션 ID를 생성하고, 이 ID를 클라이언트에게 쿠키로 전송합니다. 클라이언트는 이 세션 ID를 이용하여 서버에 상태를 저장하고 유지

특징: 세션은 서버에 저장되기 때문에 상대적으로 보안적이고, 브라우저를 종료하면 세션 데이터도 사라짐

 

결론 : 사용자의 상태 정보와 같은 데이터를 쿠키는 브라우저에 저장, 세션은 서버에 저장

 

꼬리질문

1. 쿠키와 세션을 사용하는 이유

답변:

1. 상태유지

쿠키: 웹사이트를 떠난뒤에 다시 방문해도 브라우저에 쿠키가 있어서 로그인등의 이전상태를 유지할수 있기 때문에 사용 세션 : 웹사이트를 나갓다가 다시 들어왔을때 계속해서 클라이언트가 요청을 보내게 하여 보안강화를 목적

 

2. 개인화 및 사용자 경험 향상 쿠키: 데이터가 브라우저에 저장되므로 쿠키로 사용자의 패턴이나 선호도를 분석하여 사용자 경험을 향상 시킬수 있습니다.세션: 세션은 클라이언트에 저장되는것이 아니라 서버에 저장되기 떄문에 상대적으로 보안 수준이 높고 이러한 높은 보안으로 세션을 사용하여 쇼핑카트와 같은 개인화 서비스와 수준 높은 보안 서비스를 제공합니다.

 

2. 쿠키가 세션보다 보안수준이 낮은이유

답변: 1. 클라이언트에 저장됨

사용자가 쿠키에 접근하거나 수정하는 것이 일반적으로 가능

2. 쿠키 도용 (Cookie Spoofing) 위험

브라우저에 저장되어 HTTP 요청 시에 자동으로 전송되므로, 중요한 정보가 쿠키에 노출될 가능성

3. 암호화 부족

쿠키는 기본적으로 암호화되지 않은 상태로 저장

4. 비영속적 특성

쿠키는 클라이언트 측에 영속적으로 저장되기떄문에 만료 기간 동안 정보를 계속 갖고 있을 수 있습니다.

 

 

3.그렇다면 이러한 보안위협을 해결하기 위해서 어떤 방법이 있나요?

1. HTTPS 사용

웹사이트에 HTTPS를 적용하여 데이터의 암호화를 보장합니다. HTTPS를 통해 데이터가 전송되는 동안 중간자 공격을 방지하고, 쿠키와 세션 정보의 안전성을 강화

2. HttpOnly 속성 사용

HttpOnly 속성을 적용하여 클라이언트 측의 스크립트에서 쿠키에 접근하는 것을 방지합니다. 이를 통해 XSS 공격으로 인한 쿠키 접근을 방어

3. SameSite 속성 사용

SameSite 속성을 설정하여 외부 도메인에서의 쿠키 전송을 제한할 수 있습니다. 이를 통해 Cross-Site Request Forgery (CSRF) 공격을 방어

4. 암호화 적용

bcrypt와 같은 해시 함수를 사용