본문 바로가기
개발자 일기/일일회고 (TIL)

부트캠프 일차 56, 57일차(쿠키, 세션, 토큰)

by MS_developer 2022. 11. 11.

오늘의 생각

짧은 이틀 사이에 너무 많은 일이 일어났었다.

같은 형식의 탬플릿을 통해 쿠키, 세션, 토큰을 통한 로그인(보안) 과정을 다루었는데, 완전히 개념을 이해하기도 전에 과제에 뛰어들어야 해서 엄청 혼란스러웠다. 

 

과제를 잘 진행하기 위해서는 기본적으로 분리된 두 폴더 server와 client의 관계를 파악하고 각각의 폴더에서 어떤 파일이 서로 연결되어 있고 영향을 미치는지 알아야 했다. 이 외에도 주어진 템플릿에서 사용하는 언어들을 이해하고 요구하는 기능이 무엇인지 "정확히" 파악할 필요가 있었는데, 개인적으로 이 부분이 가장 어려웠던 것 같다.

 

Access Token은 Session 쿠키로 Refresh Token은 Persistent Cookie로 보내야합니다.

 

위와 같은 문구가 가이드로 제시되었는데, 이게 "세션 쿠키"와 "지속 쿠키"라는 별도의 개념을 가진 쿠키의 명칭임을 알아내는데 오래 걸렸고, 해당 쿠키들의 차이점이나 문법적 차이를 알아내야 하는 부분이 매우 어려웠다. 학습 때도 이에 대한 개념은 정확히 짚고 넘어가지 않아서 "스스로" 알아내야하는 부분이라 더 어려웠던 것 같다.

 

또한 axios를 계속 활용했지만, 정확한 문법은 숙지하고 있지 못하는 거 같아 추가적인 개념 공부가 필요하다고 느꼈다.

 

하지만 이번 과제를 통해 상태 관리를 더욱 능숙하게 다룰 수 있게 되었고, 이미 완성된 구조의 탬플릿과 데이터의 분석 역량이 많이 늘어난 것 같다. 역시 위기는 곧 기회다.


오늘의 키워드

쿠키Cookie, 영속성 데이터, 쿠키 옵션, axios, 세션Session, 세션 아이디 express-session, 해싱Hashing, 해시 함수, 레인보우 테이블, 솔트Salt, 토큰Token, JWT, 엑세스 토큰, 리프레시 토큰 

 


오늘의 학습내용

  • 쿠키의 정의 및 영속성 데이터를 저장하는 방법
  • 쿠키 옵션을 통한 데이터 접근 및 각 주로 사용하는 옵션들 (Domain, Path, MaxAge 등)
  • Axios 라이브러리 사용법 및 fetch API와 다른 점
  • 세션 기반 인증 절차, 서버와 클라이언트에 필요한 접근 권한
  • express-session 모듈 사용법 및 쿠키와 세션의 차이점
  • 해싱 및 해시 함수를 사용한 암호화 특징
  • 레인보우 테이블솔트
  • 해싱의 목적
  • 토큰 기반 인증을 쓰는 이유와 원리
  • JWT 사용법과 엑세스 토큰, 리프레시 토큰의 권한과 역할
  • JWT 구조와 토큰 기반 인증의 장점

어려웠던 keyword / 활용한 질문

 

Q. 쿠키와 세션은 서로 어떤 관계이며, 각각 인증에 있어서 어떤 목적으로 존재하는건가요? 

 

A. 쿠키는 서버가 일방적으로 클라이언트에 전달하는 작은 데이터이고, 세션은 사용자가 인증에 성공한 상태를 저장할 때 활용하는 수단입니다. 웹사이트에서 로그인을 유지하기 위한 수단으로 쿠키를 사용하고, 쿠키에는 서버에서 발급한 세션 아이디를 저장합니다. 즉 쿠키를 통해 유효한 세션 아이디가 서버에 전달되고 만약 쿠키에 세션 아이디 정보가 없다면 서버는 해당 요청이 인증되지 않았음을 알 수 있습니다.

 

Q. 데이터베이스에 유저의 비밀번호와 같이 민감한 정보를 평문으로 저장하지 않는 이유가 뭔가요?

 

A. 데이터 유출의 위험성을 줄이기 위해서입니다. 이를 위해 해싱과 같은 단방향 암호화 방식을 사용해 데이터의 유효성을 검증할 수 있으며, 민감한 정보는 클라이언트에서 다루지 않는 것이 좋습니다.

 

 

댓글