일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- link
- amplify
- 자바스크립트
- vanilla-extract
- CSS-in-JS
- SWC
- Critical Rendering Path
- Concurrent Mode
- next hydration
- async
- 리액트쿼리
- 쓰레드
- sprinkles
- mockoon
- 컴포넌트
- react-query
- react-native
- 캐쉬
- JavaScript
- 아키텍처
- 리액트
- front-end mocking
- 기초
- 최적화
- styled-component
- React
- next.js
- 비동기
- Cache
- 기본
- MSW
- 동기
- Basic
- react server component
- thread
- 리액트네이티브
- Babel
- 개발자
- 목킹
- mock service worker
- Today
- Total
Don’t worry about failures
Cookie 와 Web Storage 본문
쿠키
- 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각.
- 쿠키를 통해 상태가 없는 HTTP 프로토콜에서 상태 정보를 기억 => 사용자의 상태 관리
- 모든 요청 마다 쿠키가 함께 전송되기 때문에, 성능이 떨어지는 원인이 될 수 있다..
- Set-Cookie HTTP 응답 헤더는 서버로부터 사용자 에이전트로 전송.
세션 쿠키 && 영속적인 쿠키
세션 쿠키 - 현재 세션이 끝날 때 삭제.
영속적 쿠키 - Expires 속성에 명시된 날짜에 삭제되거나, Max-Age 속성에 명시된 기간 이후에 삭제.
단점
- 4KB의 데이터 저장 제한
- XSS 공격 취약 -> 브라우저에서 악성 스크립트를 실행하는 공격, document.cookie를 통해 쿠키에 접근.
=> HttpOnly 속성 : 자바스크립트로 쿠키 조회 방지.
- XSRF 공격 취약 -> 사용자인척 악성 request를 보내는 공격.
- 이메일, 게시판 등을 통해 링크 전송. ex)
<img src="http://auction.com/changeUserAcoount?id=admin&password=admin" width="0" height="0">
- 해당 이메일을 보게되면 이미지는 보이지는 않지만 실행.
- 쿠키와 함께 실행 => 사용자인척 request
=> SameSite 속성 :
stric - 외부 도메인 쿠키 차단
lax - 외부 도메인 쿠키 일부 허용 ( get, a tag, link tag)
none - 외부 도메인 쿠키 모두 허용.
- 모든 HTTP Request에 포함
Web Storage
- key-value로 데이터 저장.
- 5 ~ 10M 용량
- 쿠키와 같이 데이터 저장
Web Storage 종류
1. LocalStorage
2. SessionStorage
두 Storage의 기능은 동일 하나 차이는 영속성이다.
LocalStorage
- 브라우저를 다시 열고 닫고 해도 유지된다. 도메인 별
SessionStorage
- 브라우저를 닫으면 삭제된다. 도메인/탭 별
단점
- 만료 기간 설정 불가
- 동기적 실행
- 미지원 브라우저. 사파리 시크릿 모드 에러처리 필요
- XSS 공격에 취약.
언제 이를 구별하면서 사용해야할가?
유지가 되어야 하는지 아닌지이다.
- 경험 -
기존에는 모든 storage 관리를 LocalStorage를 사용하여 user 정보, 페이지 정보를 담았다.
회사에서 디자이너분들이 admin페이지에서 브라우저를 두 개를 열고, 동시 작업이 가능한다 생각하여, 소스를 업로드를 각각 진행했지만, 소스 업로드가 꼬이는 일이 발생했고 이를 issue를 잡아주셨다.
이 이슈는 브라우저간의 정보를 공유한다는 이슈였다. 즉, LocalStorage는 모든 브라우저, 즉 해당 도메인 페이지가 같은 스토리지를 바라보고 있기 때문에 두개 이상의 브라우저를 활성화하여, 서로 다른 작업을 할 수 없다는 이슈가 발생했다.
LocalStorage를 SessionStorage를 대체하면서 이 이슈를 close를 시켜줄 수 있었다.
SessionStorage는 각 브라우저간의 서로 영향권 없이 key-value 값을 가지기 때문에 멀티 작업이 가능해 졌다.
'Interview Study' 카테고리의 다른 글
원시변수 참조변수 (0) | 2021.06.26 |
---|---|
자바스크립트 비동기 처리에 대한 설명(1) (0) | 2021.05.30 |
자바스크립트 이벤트 관리 (1) | 2021.05.16 |
this, bind, call, apply (0) | 2021.05.08 |
(Intro) interview study.. (0) | 2021.05.05 |