쿠키는 서버에서 클라이언트에 데이터를 저장하는 방법 중 하나
쿠키를 이용한다는 것은 서버에서 클라이언트에 쿠키를 전송하는 것만 의미X, 클라이언트에서 서버로 쿠키를 전송하는 것도 포함
서버 클라이언트에 데이터를 저장 할 수 있음
도메인은 https://www.codestates.com 중
codestates.com 을 의미
쿠키 옵션에 도메인 정보가 존재한다면 클라이언트에서 쿠키의 도메인 옵션과 서버의 도메인이 일치해야 쿠키를 전송 할 수 있음
세부 경로는 서버가 라우팅 할 때 사용하는 경로
요청한 URL이 http://www.localhost.com:3000/users/login
라면 세부경로는
/users/login
이 됨
디폴트값은 /
설정된 path를 전부 만족하면 요청하는 경로가 추가로 더 존재해도 쿠키를 서버에 전송 가능
path값이 /users
인데 /users/login
을 요청하면 path를 모두 만족하므로 쿠키 전송가능
쿠키의 유효기간 정하는 옵션
MaxAge는 앞으로 몇 초 동안 쿠키가 유효한지 설정
Expires 는 MaxAge와 비슷, 대신 Date를 지정 클라이언트의 시간을 기준으로
지정된 시간, 날짜를 초과하면 쿠키는 파괴됨
쿠키를 전송해야 할 때 사용하는 프로토콜에 때른 쿠키전송 여부 결정
true라면 HTTPS 프로토콜을 이용해야 쿠키전송 가능
자바스크립트에서 브라우저의 쿠키에 접근 여부 결정
true 라면 자바스크립트에서 접근 불가능 디폴트값은 false
Cross-Origin 요청 받은 경우 요청에서 사용한 메소드와 이 옵션의 조합으로 쿠키 전송 여부결정
same-site 요청보낸 Origin과 서버의 도메인이 같은 경우
서버가 client에 유일하고 암호화된 ID를 부여
중요 데이터는 서버에서 관리 쿠키에는 데이터에 대한 아이디만 암호화된 상태로 전송
예시
1.사용자가 아이디와 비밀번호로 로그인을 시도
2.성공 시 서버가 인증 성공한 상태(세션) 서버는 일종의 저장소(세션 스토어)에 세션을 저장
3.세션이 만들어지면 세션을 구분할 수 있는 아이디 생성
4.클라이언트에게 세션 아이디 전달
4.1 웹사이트에서 로그인을 유지하기위한 수단으로 쿠키사용 쿠키에 서버에서 발급한 세션아이디 저장
5.새로운 요청을 보낼 때 쿠키를 통해 저장된 세션아이디가 서버에 전달
6.저장소에 세션이 존재할 시 요청에 대한 응답
세션은 이런식으로 서버에 필요한 것을 저장하는 방식을 이용한다.
-헤커가 직접 데이터에 접근X
토큰기반과 OAuth 기반은 내일 작성을 하며 마무리를 짓겠다.