[TIL] Day57- 인증/보안(2)

공부중인 개발자·2021년 6월 29일
0

TIL

목록 보기
57/64
post-thumbnail

쿠키는 서버에서 클라이언트에 데이터를 저장하는 방법 중 하나

쿠키를 이용한다는 것은 서버에서 클라이언트에 쿠키를 전송하는 것만 의미X, 클라이언트에서 서버로 쿠키를 전송하는 것도 포함

서버 클라이언트에 데이터를 저장 할 수 있음

  1. Domain

도메인은 https://www.codestates.com
codestates.com 을 의미

쿠키 옵션에 도메인 정보가 존재한다면 클라이언트에서 쿠키의 도메인 옵션과 서버의 도메인이 일치해야 쿠키를 전송 할 수 있음

  1. Path

세부 경로는 서버가 라우팅 할 때 사용하는 경로
요청한 URL이 http://www.localhost.com:3000/users/login 라면 세부경로는
/users/login 이 됨

디폴트값은 /

설정된 path를 전부 만족하면 요청하는 경로가 추가로 더 존재해도 쿠키를 서버에 전송 가능

path값이 /users 인데 /users/login 을 요청하면 path를 모두 만족하므로 쿠키 전송가능

  1. MaxAge or Expires

쿠키의 유효기간 정하는 옵션

MaxAge는 앞으로 몇 초 동안 쿠키가 유효한지 설정
Expires 는 MaxAge와 비슷, 대신 Date를 지정 클라이언트의 시간을 기준으로

지정된 시간, 날짜를 초과하면 쿠키는 파괴됨

  1. Secure

쿠키를 전송해야 할 때 사용하는 프로토콜에 때른 쿠키전송 여부 결정
true라면 HTTPS 프로토콜을 이용해야 쿠키전송 가능

  1. HttpOnly

자바스크립트에서 브라우저의 쿠키에 접근 여부 결정
true 라면 자바스크립트에서 접근 불가능 디폴트값은 false

  1. SameSite

Cross-Origin 요청 받은 경우 요청에서 사용한 메소드와 이 옵션의 조합으로 쿠키 전송 여부결정

  • Lax: Cross-Origin 요청일 때 GET 메소드만 쿠키전송가능
  • Strict: Cross-Origin이 아닌 same-site인 경우에만 쿠키 전송
  • None: 항상 쿠키 전송가능, 쿠키옵션 중 Secure 필요

same-site 요청보낸 Origin과 서버의 도메인이 같은 경우

Session-based Authentication

서버가 client에 유일하고 암호화된 ID를 부여
중요 데이터는 서버에서 관리 쿠키에는 데이터에 대한 아이디만 암호화된 상태로 전송

예시
1.사용자가 아이디와 비밀번호로 로그인을 시도

2.성공 시 서버가 인증 성공한 상태(세션) 서버는 일종의 저장소(세션 스토어)에 세션을 저장

3.세션이 만들어지면 세션을 구분할 수 있는 아이디 생성

4.클라이언트에게 세션 아이디 전달
4.1 웹사이트에서 로그인을 유지하기위한 수단으로 쿠키사용 쿠키에 서버에서 발급한 세션아이디 저장

5.새로운 요청을 보낼 때 쿠키를 통해 저장된 세션아이디가 서버에 전달

6.저장소에 세션이 존재할 시 요청에 대한 응답

세션은 이런식으로 서버에 필요한 것을 저장하는 방식을 이용한다.

CSRF

  • 다른 오리진에서 유저가 보내는 요청을 조작하는 것

-헤커가 직접 데이터에 접근X


토큰기반과 OAuth 기반은 내일 작성을 하며 마무리를 짓겠다.

profile
열심히 공부하자

0개의 댓글