당신의 친절한 이웃, 코딩맨

#38 JS - Session(세션) & cookie(쿠키) 개념 본문

Today I Learn (TIL)

#38 JS - Session(세션) & cookie(쿠키) 개념

이웃집 친구 2020. 12. 17. 22:00
반응형

* HTTP 통신은 요청과 응답을 진행하고, 접속을 끊는다. 

-- > Connectionless(비 연결 지향)

 

* 그렇기 때문에 클라이언트의 상태 정보를 알 수 없다. 

-- > Stateless (상태 정보 유지 안 함)

 

=> HTTP 프로토콜에서 상태를 유지하기 위해 쿠키와 세션이라는 방법이 존재

 

 

Session Cookie
브라우저 종료되면 세션 삭제 Key - Value 쌍의 데이터 파일
로그인 했다 치면, sessionid(유니크한 id) 응답 헤더에 포함 쿠키 이름, 쿠키 값, 만료 시간, 전송할 도메인, etc ... 
그 이후 클라이언트는 자동으로 위의 id를 요청 헤더에 추가 로그인하면, cookie 발급 --> 이 쿠키로 인증/인가 진행
  크롬 개발자 탭 - > Application 탭에서 확인 가능
보안) 서버에서 정보를 갖고, session id만 응답했기 때문에,
session id를 탈취해도 안전
보안 ) 안전을 위해 쿠키값 암호화
   
속도) 요청 마다 서버에서 처리 => 비교적 느림 속도) 파일에서 읽기 때문 = > 상대적으로 빠름
   
로컬과 서버에 저장 클라이언트 로컬 스토리지에 저장 ( 만료기간..)

 

* JWT(Json Web Token)

 

보통 로그인 기능에 많이 사용한다.

브라우저를 껐다 켜도, 로그인이 가능하게 만들기 위해 Local Storage에 저장한다 생각할  수 있는데, 탈취의 가능성이 있기 때문에, 저장하지 않도록 한다.

Vue.js를 사용한다면, Vuex에 저장하거나 하는 방향을 택한다.

 

혹은, Cookie header에 포함해서 전송하는 방법이 있다. 이 때, CSRF 공격에 취약해질 수 있지만, CORS를 활용하여 도메인을 설정한다면, 임시방편이 가능하다.

Comments