본문 바로가기

컴퓨터이론

[기초 이론] 4. 쿠키와 세션

이 포스트는 인프런의  반드시 알고 넘어가야  할 웹  기술  기초편  을 보고 작성하였습니다!

 

 

 

  • 쿠키 : 지속 쿠키

  • 세션 : 세션 쿠키

 

4-1. 쿠키

- 상태유지및관리, 사용자 인증 수단

  • 나의 대한 상태 정보가 유지되기 위해 쿠키를 사용

  • 쿠키를 통해 사용자 식별 및 세션 유지를 통해 클라이언트와 서버간의 상태관리

쿠키 헤더 구조 : 서버에서 클라이언트로 쿠키 발급 시 Set-Cookie 헤더에 의해 쿠키값 세팅

  • 해당 사이트에 접근할 때마다, 클라이언트는 Set-Cookie 에 의해 세팅 된 값을 Cookie 헤더에 세팅해 요청메세지 전달

  • 서버는 이를 통해 상태를 관리

  • 구조

<Set-Cookie 헤더 구조>

Set-Cookie: name=value [; expires=date][; path=path][; domain=domain][; secure]

<Cookie 헤더 구조>

Cookie: name1=value1 [; name2=value2][; name3=value3] ......

 


(1) 쿠키(지속 쿠키)

: 웹 서버에서 발급 시 클라이언트 하드 디스크텍스트 형태로 저장.

 

 

 

  • 클라이언트 PC사용자는 해당 쿠키 정보를 열람가능하다.

 

①쿠키 발급 과정

  • 예시: 지속 쿠키를 기반으로 로그인 기능을 사용한다.

1) 로그인 요청

2) ID, PW 가 정상값이면 로그인이 된다.

3) Set-Cookie 값이 설정된다.

4) 클라이언트는 해당 사이트에 대한 쿠키 값을 세팅한다.

5) 웹 브라우저쿠키 헤더를 통해 쿠키 값을 세팅한다. 

6) 서버는 쿠키 헤더를 통해 사용자를 식별한다.

7) DB에서 정보를 뽑아서 출력한다.

 

② 쿠키 폐기 과정

  • 예시: 로그아웃의 경우에 사용한다.

1) 로그아웃 요청

2) 서버가 Set-Cookie 로 응답을 보낼때, 내용에 DELETED를 넣어보낸다.

3) 사용자 PC에 있는 쿠키값을 삭제한다.

 

③ 문제점

  • 쿠키를 폐기하더라도 해당 값을 알고 있으면 재사용이 가능하다.
  • 쿠키 값이 평문일 경우 변조의 위협이 있다. 

      → 식별 인증 관리 시 암호화 과정을 거쳐야 한다.

 

④ 개선 방법

- 유효 기간에 따른 폐기방법, 암호화 알고리즘의 적절성을 검토해 쿠키 발급 로직을 구현해야한다.

  • 발급 시 고려사항: 유효기간 처리, 양방향 암호화 알고리즘 종류, 비밀키 보관방법

* 쿠키 값을 세팅할 때 복호화를 통해 권한, IP, 사용자를 알 수 있기 때문에 복호화가 가능해야한다.

따라서 양방향 알고리즘을 적용한다. 키 값이 필요하다.

 

 

 

 

(2) 세션(세션 쿠키)

: 웹 서버에서 발급 시 클라이언트 웹 브라우저 캐시에 저장

 

 

  • 정상적으로 로그인 시 서버에 해당 세션에 대한 정보를 저장한다.

  • 저장 방법: 메모리, 파일 SYSTEM, 데이터베이스

      * 일반적으로 메모리에 저장한다.

  • 세션은 암호화, 난독화가 되지 않는다.

      ⇒ 임의의 문자들이 무작위로 나열되어 공격자 측에서 특정 사용자의 세션을 추측하기 힘들다.

 

세션 발급 과정

  • 예시: 최초 로그인 시 

1) 의미 없는 세션 값이 로그인이라는 기능을 통해 맵핑 정보가 담긴다.

2) 세팅을 해놓으면, Set-Cookie 를 이용해 웹 브라우저에 올리기 위해 PHPSESSID에 세션값을 쓴다.

3) Cookie 헤더를 통해 세션 값을 쓴다.

4) 서버는 찾아 정보를 출력한다.

 

② 세션 폐기 과정

  • 로그아웃 버튼 클릭 시, 서버 세션에 저장된 정보를 없앤다.  

      ⇒ 세션 값을 의미없는 세션이 된다.

 

∨ 폐기 후 재사용의 문제가 없다.

 

지속 쿠키는 왜 필요할까?

  • 편리성: 지속 쿠키 < 세션 쿠키

  • 서버 부하율: 지속 쿠키 < 세션 쿠키

 

큰 사이트의 경우 많은 세션값이 필요해, 서버에 과부하가 걸린다.

따라서 서버에 부담이 적은 지속 쿠키를 사용한다.