Web - 이론

Aquila·2024년 8월 19일

SecurityAcademy

목록 보기
1/9
post-thumbnail

쿠키와 세션

쿠키란?

  • 쿠키란 하이퍼 텍스트의 기록서의 일종으로서 인터넷 사용자가 어떠한 웹사이트를 방문할 경우 그 사이트가 사용하고 있는 서버를 통해 인터넷 사용자의 컴퓨터에 설치되는 작은 기록 정보 파일을 일컫는다. HTTP 쿠키, 웹 쿠키, 브라우저 쿠키라고도 한다.
  • 사용자가 웹 사이트에 방문할 때 클라이언트에 저장되는 key=value 쌍의 문자열로 구성된 작은 임시파일
  • 웹 브라우저는 동일 서버에 재요청이 발생할 경우 저장된 쿠키 데이터를 cookie 요청 헤더에 담아 함께 전송
  • 쿠키는 HTTP 프로토콜의 특징인 비상태성으로 인해 사용자의 연속되는 요청들이 동일 사용자의 요청인지 식별하거나 웹사이트 내에서 사용자의 상태를 기억

쿠키의 사용목적

  • 세션 관리 : 웹 사이트가 사용자를 식별하고 사용자의 로그인 정보 기억
  • 개인화 : 사용자별 맞춤형 광고나 웹 사이트내 환경 설정 등과 같이 사용자의 웹사이트 환경을 개인화
  • 사용자 활동 추적 : 사용자의 웹사이트 사용 패턴이나 검색 습관 등을 추적하고 분서갛여 사용자가 선호할만한 다른 컨텐츠를 제안할 수 있도록 함

쿠키의 유형

  • 세션 쿠키 : 사용자가 웹 사이트를 방문하고 있는 동안 메모리에 저장되는 쿠키. 임시 쿠키, 인메모리 쿠키라고도 하며 사용자가 웹 브라우저를 닫을 때 삭제되며, 별도의 만료일자나 유효기간이 설정되지 않은 쿠키가 세션 쿠키로 간주됨
  • 영구 쿠키 : 서버에 의해 만료 일시나 유효기간이 설정된 키이며 사용자의 하드디스크에 저장된다. 웹 브라우저가 닫힐 때 삭제되는 세션 쿠키와는 달리 설정된 만료 일시가 종료되거나 유효 기간이 종료되었을 때 삭제됨

쿠키의 발급과정

  • 쿠키는 클라이언트의 HTTP 요청을 수신한 서버가 응답을 회신할 때 Set-Cookie 응답 헤더를 통해 발급
  • Set-Cookie 헤더는 다음의 속성들을 통해 웹 브라우저가 쿠키를 처리하는 방법을 제어할 수 있다.
  • Set-Cookie 응답 헤더의 기본적인 형식

    Set-Cookie: Cookie-name=Some-Value;

  • Expires: 쿠키의 유효기간
  • Domain: 웹 브라우저에 의해 쿠키가 전송될 도메인 결정 쿠키를 발급하는 도메인의 최상위 도메인과 그 하위 도메인에만 설정 가능
  • Path: 웹 브라우저에 의해 쿠키가 전송될 URL 경로 결정
  • Secure : HTTPS를 통한 암호화된 연결인 경우에만 쿠키를 전송하도록 설정
  • HttpOnly: 클라이언트 측에서 자바스크립트를 통해 쿠키에 접근할 수 없도록 설정
  • SameSite: 크로스 도메인을 통한 요청에 쿠키를 포함시킬지 여부
  • Lax: 크로스 도메인이라도 Get 요청인 경우 쿠키 전송
  • Strict: 자기 자신에서 발생한 요청인 경우에만 쿠키 전송
  • None: 모든 크로스 도메인 요청에서 쿠키 전송

쿠키의 동작 원리

세션이란?

  • 일정 시간 동안 사용자와 웹 서버간의 연결을 유지해주는 기술
  • 사용자 활동에 따른 상태 데이터를 저장하고 추적 가능
  • 쿠키와 달리 서버측에 저장되고 관리됨

세션의 상태 관리

  • 쿠키: 세션 토큰을 저장하기 위해 사용
  • 숨겨진 폼 필드: 서버는 클라이언트에게 전송될 HTML 폼의 숨겨진 필드에서 세션 토큰을 동적으로 포함 클라이언트가 다시 폼을 제출할 때 다시 서버로 전송됨
  • URL 재작성: 클라이언트로부터 요청되는 URL에 고유한 세션 토큰을 동적으로 포함. 웹사이트에 포함된 모든 a태그의 href나 form 태그의 action 속성에 들어갈 URL에 고유한 세션 토큰을 포함함

세션의 동작 원리

세션 탈취공격

안전한 세션관리

  • 예측할 수 없는 세션 토큰: 사용자에게 쿠키를 통해 발급되는 세션 토큰은 SHA256과 같은 함호화 해시를 통해 구성, 길이 최소 128bits 이상이어야 하며, 무작위성 보장, 사용자 식별에 용이하도록 고유해야 함
  • 암호화된 HTTPS 통신 사용
  • 쿠키 보안 속성 설정
    - Domain & Path: 쿠키가 전송될 도메인과 경로를 최대한 제한적으로 설정
    - Secure: HTTPS 연결인 경우에만 쿠키를 정송하도록 설정
    - HttpOnly: 스크립트를 통해 쿠키에 접근할 수 없도록 설정
    - Expires & Max-Age: 두 속성을 미설정하여 세션 쿠키를 사용, 사용 시 만료 일시나 유효 기간을 제한적으로 설정
    - SameSite: 크로스 도메인간 쿠키를 전송할 수 없도록 설정

인코딩

인코딩이란?

  • 어떤 한 형식의 데이터를 다른 형식으로 변환하는 기술이나 과정

디코딩이란?
인코딩된 형식을 다시 원래의 형식으로 변환하는 기술이나 과정

URL인코딩

이중 인코딩

이중 인코딩은 웹 서버와 웹 애플리케이션에서 각각 URL 디코딩을 수행하는 경우 입력값을 두 번 URL 인코딩하는 기법

HTML 인코딩

HTML 문서에 포함되는 <, > 와 같이 특수한 기능을 하는 문자의 악의적인 활용을 방어하기 위해 스크립트 실행에 이용될 수 없도록 인코딩하고 HTML 문서 안에서 안전하게 표시하기 위해 사용하는 인코딩 기법

Base64 인코딩

  • Base64란 바이너리 데이터를 문자 코드에 영향을 받지 않는 공통 ASCII 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식을 말한다.
  • 전자메일을 통한 이미지 등의 바이너리 데이터를 전송하는 용도로 개발
  • 웹 사이트에서는 일반적으로 요청 매개변수 값이나 세션 등을 단독화하는 용도로 사용
  • Base64로 인코딩된 문자열은 64개의 알파벳 대소문자와 숫자, 그리고 +, / 기호로 구성
  • 끝을 알리기 위한 코드로 = 또는 ==를 사용 (원본보다 33% 정도 크기 증가)

Base64 인코딩 프로세스

1) 각 글자를 8bit의 블럭으로 나눈다.
2) 8bit 단위의 블럭 3개를 결합해 24bit의 그룹을 만든다.
3) 24bit의 그룹은 다시 6bit 단위의 개별 그룹으로 나눈다.
4) 각 6bit 단위의 개별 그룹을 색인표에 따라 변환한다.
5) 24bit 그룹 구성 시 8bit 단위로 채워지지 않고 누락되는 경우 글자수만큼 =로 채운다.

인코딩 기법과 종류

  • Hex 인코딩
    Hex 16진수를 의미하며, 문자열을 각각의 바이트에 해당하는 두 자리의 16진수 문자로 변환하는 인코딩 기법

  • 유니코드 인코딩
    전 세계의 모든 문자를 이기종 시스템 환경이나 다국어 언어 환경의 컴퓨터에서 일관되게 표현하고 처리하기 위한 국제 표준

  • 유니코드 인코딩(UTF-8)
    원본 문자의 유니코드 값의 길이에 따라 가변적으로 최소 1byte에서 최대 6byte로 저장

유니코드 인코딩

0개의 댓글