Security/Webhacking

Cookie & Session

Jackpod1001001 2024. 5. 8. 15:32

쿠키와 세션은 무엇인가

쿠키와 세션은 웹 서비스에서 사용자의 상태를 저장하여 사용자가 웹사이트를 더욱 편하게 사용하도록 만들기 위해 만들어진 개념입니다.

왜 이런 개념이 만들어졌을까요?

HTTP 프로토콜의 특징


https://raonctf.com/essential/study/web/cookie_connection

웹 서비스에서 사용하는 HTTP프로토콜은 Connectionless와 Stateless라는 특성을 가집니다.

 

Connectionless
클라이언트가 서버에 요청을 하고 응답을 받으면 바로 연결을 끊어 연결을 유지 하지 않는다.

이를 통해 서버의 자원을 효율적으로 관리하고, 수 많은 클라이언트의 요청에도 대응할 수 있게 한다.
Stateless
Stateless는 서버가 클라이언트의 이전 상태를 보존하지 않는다는 의미이다

쿠키와 세션을 사용하지 않는다면 페이지를 이동할 때마다 로그인을 해주어야 하게 된다.

 

위와 같은 문제점을 보완해주기 위해 생겨난 개념이 쿠키(Cookie)와 세션(Session)입니다.

 

쿠키(Cookie)


https://raonctf.com/essential/study/web/cookie_connection

HTTP 쿠키(HTTP cookie)란 하이퍼 텍스트의 기록서(HTTP)의 일종으로서 인터넷 사용자가 어떠한 웹사이트를 방문할 경우 사용자의 웹 브라우저를 통해 인터넷 사용자의 컴퓨터나 다른 기기에 설치되는 작은 기록 정보 파일을 일컫는다. -wikipedia-

 

쉽게 말해 우리가 웹 사이트를 이용할 때 서버에서 우리 컴퓨터에 있는 웹 브라우저에게 쿠키라는 파일을 하나 보내줍니다. 그 쿠키에는 사용자가 웹 사이트를 편하게 이용할 수 있는 여러정보가 담겨있습니다.

 

쿠키의 구성요소

  • 쿠키의 이름 (name)
  • 쿠키의 값 (value)
  • 쿠키의 만료시간 (Expires)
  • 쿠키를 전송할 도메인 이름 (Domain)
  • 쿠키를 전송할 경로 (Path)
  • 보안 연결 여부 (Secure)
  • HttpOnly 여부 (HttpOnly)

쿠키의 특징

  • 클라이언트는 총 300개의 쿠키를 저장할 수 있다
  • 하나의 도메인 당 20개의 쿠키를 가질 수 있다
  • 하나의 쿠키는 4KB까지 저장 가능하다

쿠키의 동작방식

1. 사용자가 쿠키 없이 request 요청

2. 서버가 쿠키를 생성하여 response와 쿠키를 함께 응답

3. 사용자가 서버에게서 받은 쿠키를 저장하고 다음 request부터 쿠키를 넣어 요청

 

쿠키의 사용 예

  • 방문 사이트에서 로그인 시, "아이디와 비밀번호를 저장하시겠습니까?"
  • 쇼핑몰의 장바구니 기능
  • 자동로그인, 팝업에서 "오늘 더 이상 이 창을 보지 않음" 체크, 쇼핑몰의 장바구니

 

션(Session)


세션이란 일정시간동안 사용자로부터 들어오는 요구를 하나의 상태로 유지하는 기술이다.

 

예를 들어, 로그인을 했을 때 다른 페이지로 이동해도 로그인 상태가 계속 유지되면서 이용할 수 있는것은 세션이 있기 때문입니다.

 

세션의 특징

  • 세션은 서버의 메모리 혹은 DB등에 저장된다.
  • 서버에서는 클라이언트를 구분하기 위해 세션 ID를 부여하며 웹 브라우저가 서버에 접속해서 브라우저를 종료할 때까지 인증상태를 유지한다.
  • 접속 시간에 제한을 두어 일정 시간 응답이 없다면 정보가 유지되지 않게 설정 가능.
  • 사용자에 대한 정보를 서버에 두기 때문에 쿠키보다 보안에 좋지만, 사용자가 많아질수록 서버 메모리를 많이 차지하게 됨
  • 사용자가 Request를 보내면, 해당 서버의 엔진이 클라이언트에게 세션 ID를 부여함.

세션의 동작방식

1. 사용자가 서버에 접속 시 세션 ID를 발급받음

2. 사용자가 request 요청을 보낼 때 쿠키에 세션 ID를 넣어서 보내게 됨

3. 서버는 세션 ID를 통해 세션 ID에 맞는 클라이언트의 정보를 가져옴

4. 가져온 클라이언트 정보를 통해 사용자에게 응답

 

세션의 사용 예

  • 로그인 상태유지

쿠키와 세션의 차이


  쿠키 세션
저장 위치 클라이언트 웹 서버
저장 형식 text Object
만료 시점 쿠키 저장시 설정 브라우저 종료시 삭제
사용하는 자원 클라이언트 리소스 웹 서버 리소스
용량 제한 총 300개
하나의 도메인 당 20개
하나의 쿠키 당 4KB
서버가 설정하게 됨
속도 빠름 느림
보안 안좋음 좋음

 

쿠키 취약점

쿠키와 관련하여 발생할 수 있는 취약점에는 다음과 같은 것들이 있습니다.

 

Session Hijacking

 - XSS나 Sniffing등의 공격을 통해 쿠키를 탈취당하게 되면 공격자가 피해자의 세션 ID를 통해 바로 로그인을 할 수 있게 됩니다.

 

CSRF

 - CSRF공격을 통해 사용자의 세션 ID를 이용하여 공격자가 원하는 작업을 수행할 수 있습니다.