Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

Header - 쿠키 본문

  • Set - Cookie: 서버에서 클라이언트로 쿠키 전달(응답)
  • Cookie: 클라이언트가 서버에서 받은 쿠키를 저장하고, HTTP 요청시 서버로 전달.

 

0. Stateless, Connectionless

 


HTTP의 특징은 Stateless, Connectionless이다. 즉 서버와 클라이언트는 서로의 상태를 유지하지 않고, data 전송 수 연결을 종료한다. 이와 같은 특징으로 아래와 같은 상황에서 문제..? 불펴함..? 이 발생할 수 있다.

 

무상태(stateless) 프로토콜

서버가 클라이언트이 상태를 보존하지 않음 장점 : 서버 확장성 높음, 스케일 아웃 단점 : 클라이언트가 추가 데이터 전송필요. 1. 상태 유지 :Stateful 서버가 클라이언트의 이 전 상태를 보존 2. 무

bsh-developer.tistory.com

 

비 연결성(Connectionless)

1. 비 연결성 HTTP는 기본이 연결을 유지하지 않는 모델. 일반적으로 초 단위 이하의 빠른 속도로 응답 필요한 데이터 주고받고 연결 끊어버림 1시간 동안 수 천명이 서비스를 사용해도 실제 서버

bsh-developer.tistory.com

 

 

1. welcome page 접속 및 로그인 상황


  • welcome page에 접속하면 서버에서 "환영합니다. 고객님" 이라고 띄워준다고 가정.
    GET /welcome HTTP/1.1
  • 로그인 후에 같은 요청을 다시 보내면 어떻게 될까?
    GET /welcome HTTP/1.1
  • 서버는 요청 메시지만 보면 로그인을 했는지 어쨌는지 누군지 모른다.
  • 서버는 클라이언트의 상태를 유지하지 않기 때문에 "환영합니다. 고객님"말고는 할 수 있는게 없다.
  • 하지만 우리는 로그인을 했다면 "ㅇㅇㅇ님이 로그인 했습니다" 와 같이 유저 정보?가 올라가길 바랄 수 있다.
  • 그렇다고 모든 요청에 user 정보를 보낼 수 도 없다.
  • 이러한 상황에서 사용할 수 있는 것이 쿠키이다.

 

 

 

2. 쿠키 - 로그인


 

  • 쿠키를 사용했을 때 로그인 상황이다.
  • 클라이언트는 POST 메서드를 통해 user 정보 전달 및 로그인을 한다.
  • 서버는 응답메시지 헤더에 Set-Cookie: use=홍길동 을 전달한다.
  • 클라이언트는 쿠키 저장소에 쿠키를 저장한다.

 

 

 

2. 로그인 이후 welcome 페이지 접근


  • 웹 브라우저는 서버에 요청을 보낼 때 마다 쿠키를 뒤짐.
  • 쿠키 값을 꺼내서 헤더로 보냄.
  •  Cookie: user=홍길동
  • 따라서 로그인 후 welcome page에 접속하면 생성된 쿠키가 전달이 되기 때문에
  • 서버는 해당 요청을 보낸 유저의 정보를 알 수 있다.
  • 참고로 쿠키가 생성됨녀 모든 요청에 쿠키가 자동으로 포함된다.

 

 

 

 

3.쿠키


  • set-cookie: sessionId=abcde1234;expires=Sat, 26-Dec-2020 00:00:00 GMP;path=/;domain=.google.com;Secure
  • 사용처
    - 사용자 로그인 세션 관리 --> 진짜 많이씀..
    - 광고 정보 트래킹
  • 쿠키 정보는 항상 서버에 전송됨
    - 네트워크 트래픽 추가 유발
    - 최소한의 정보만 사용(세션 id, 인증 토큰)
    - 서버에 전송하지 않고, 웹 브라우저 내부에 데이터를 저장하고 싶으면 웹 스토리지 참고
  • 쿠키는 한 번 세팅되면 무조건 전송됨.
  • 주의!
    - 보안에 민감한 데이터는 저장하면 안됨(주민번호, 신용카드 번호)

 

 

 

4. 쿠키의 생명주기


  • Expires
    -  만료일이 되면 쿠키 삭제
    - set-cookie: expires=Sat, 26-Dec-2020 00:00:00 GMP
  • max-age
    - 0이나 음수를 지정하면 쿠키 삭제
    - Set-cookie: max-age=3600(3600초)
  • 세션 쿠키: 만료 날짜를 생략하면 브라우저 종료시 까지만 유지됨
  • 영속 쿠키: 만료 날짜를 입력하면 해당 날짜까지 유지

 

 

 

5. 쿠키 - 도메인


  • 생성된 쿠키가 아무 사이트에 전송되면 클일남
  • 쿠키는 도메인을 지정할 수 있음.
  • demain=example.org
  • 명시: 명시한 문서 기준 도메인 + 서브 도메인 포함해서 쿠키 전송함.
    - domain=example.org를 지정해서 쿠키 생성하면?
    - example.org는 물론이고
    - dev.example.org도 쿠키 접근
  • 생략 : 현재 문서 기준 도메인만 적용
    - example.org에서 쿠키를 생성하고 domain 지정을 생략하면?
    - example.org에서만 쿠키 접근
    - dev.example.org는 쿠키 미접근

 

 

 

6. 쿠키 - 경로지정


  • path=/home
  • 이 경로를 포함한 하위 경로 페이지만 쿠키 접근 가능
  • 일반적으로 path=/ 루트로 지정
  • path=/home 지정하면?
    - /home -> 가능
    - /home/level1 -> 가능
    - /home/level1/level2 -> 가능
    - /hello -> 불가능~

 

 

 

7. 쿠키 - 보안


  • Secure
    - 쿠키는 http, https를 구분하지 않고 전송
    - Secure는 적용하면~ https인 경우에만 전송함
  • HttpOnly
    - XSS 공격 방지
    - 자바스크립트에서 접근이 불가능함!
    - HTTP 전송에만 사용됨.
  • SameSite
    - XSRF 공격 방지
    - 요청 도메인과 쿠키에 설정된 도메인이 같은 경우만 쿠키 전송.

 

 

Comments