개발일지 <내일배움캠프> 20230421 TIL

임재훈·2023년 4월 21일
0

JWT

JWT는 JSON 웹 토큰을 나타냅니다.

JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다.

헤더: 서명을 생성하는 데 사용되는 토큰 유형 및 해싱 알고리즘에 대한 정보가 포함되어 있습니다.
페이로드 : 토큰이 전달하는 클레임 또는 데이터가 포함됩니다.
서명 : 전송 중에 토큰이 변조되지 않았는지 확인하는 데 사용됩니다.
JWT는 일반적으로 웹 애플리케이션 및 API에서 클라이언트와 서버 간에 사용자 데이터를 안전하게 전송하는 수단으로 사용됩니다. 토큰은 서버에서 생성되어 저장되는 클라이언트로 전송됩니다. 그런 다음 클라이언트는 각 후속 요청과 함께 토큰을 전송하여 서버가 사용자 이름과 암호를 계속 확인하지 않고도 사용자를 인증하고 권한을 부여할 수 있도록 합니다.

쿠키

브라우저에서 저장되는 키와 같이 들어있는 작은 파일
브라우저 상태 정보를 로컬에 저장했다가 참조한다.
브라우저에 300개까지 쿠키 저장 가능
하나의 도메인당 20개 값만 가질 수 있다.
하나의 쿠키값은 4KB까지 저장 가능
Response Header에 Set-Cookie 속성을 사용하면 클라이언트에 쿠키를 만들 수 있다.
쿠키는 사용자가 따로 요청하지 않아도 브라우저가 Request 시에 - Request Header를 넣어서 자동으로 서버에 전송한다.
세션
사용자 정보를 파일 브라우저에 저장하는 쿠키와 달리 세션은 서버 측에서 관리한다.
서버에서 클라이언트를 구분하기 위해 세션 ID를 부여하며, 웹 브라우저가 서버에 접속해서 브라우저를 종료할 때까지 인증 상태를 유지한다.
접속 시간에 제한을 두어 일정 시간 응답이 없다면 정보가 유지되지 않게 설정 가능
데이터를 서버에 두기 때문에 쿠키보다 보안이 좋다.
사용자가 많아질수록 서버 메모리를 많이 차지함

웹스토리지

로컬 스토리지(Local Storage)와 세션 스토리지(Session Storage)가 있으며, 같은 Storage 객체를 상속하기 때문에 메서드가 동일
클라이언트에 데이터를 저장할 수 있도록 HTML5부터 추가된 저장소
간단한 Key-Value 스토리지 형태
쿠키와 달리 자동 전송의 위험성이 없음
오리진(Origin)(도메인,프로토콜,포트) 단위로 접근이 제한되는 특성 덕분에 CSRF로 부터 안전
쿠키보다 큰 저장 용량 지원 (모바일 2.5MB, 데스크탑 5~10MB)
서버가 HTTP 헤더를 통해 스토리지 객체를 조작할 수 없음 (웹 스토리지 객체 조작은 JavaScript 내에서만 수행)
오직 문자형(string) 데이터 타입만 지원

(1) 로컬 스토리지

사용자가 데이터를 지우지 않는 이상, 브라우저나 OS를 종료해도 계속 브라우저에 남아있음 (영구성)
단, 동일한 브라우저를 사용할 때만 해당
지속적으로 필요한 데이터 저장(자동 로그인 등)

(2) 세션스토리지

데이터가 오리진 뿐만 아니라 브라우저 탭에도 종속되기 때문에, 윈도우나 브라우저 탭을 닫을 경우 제거
일시적으로 필요한 데이터 저장(일회성 로그인 정보, 입력폼 저장 등)

0개의 댓글