오늘은 쿠키와 세션에 대해 적어보려 한다.
우리가 사이트 로그인 하면 새로고침 해도 로그아웃이 되지 않는 현상 !!
이거는 클라이언트가 서버에 누구인지를 지속적으로 알려주고 있기 때문이다.
🧐 일단 클라이언트와 서버의 상황을 보자.
1. 클라이언트가 쿠키를 갖지 않은 상태에서 서버에게 요청을 하면,
2. 서버는 쿠키와 함께 응답을 유저에게 해준다.
3. 유저가 서버에게 다시 쿠키랑 같이!! 요청을 하고,
4. 서버는 클라이언트에게 다시 응답한다.
🚗 쿠키
- 사용자의 상태를 저장하기 위해 사용
- 사용자를 추정할만한 정보를 쿠키로 만듬.
- 개인정보 유출 방지를 위해 쿠키를 주기적으로 지울것을 권고한다.
- 쿠키는 name=billy;year=2021 처럼 문자열 형식으로 존재. 여러개일 경우 ; 로 구분.
- 서버에서 쿠키를 구워서 그걸 response에 보내면, 웹브라우저는 받은 데이터를 그대로 저장 및 보관한다..
- 브라우저에서 가지고 있는 쿠기가 있다면, 서버에 request를 할때, 항상 가지고 있는 쿠키 데이터를 포함해 보낸다.
- 쿠키는 별도의 암호화 없이 데이터를 그대로 주고받음.__ 그래서 보안이 취약하다.
- 쿠키에는 한글과 줄바꿈은 안됨.
🚗 세션
- 데이터를 바로 주고받는게 아니라 열쇠를 가지고 있는애.
- 쿠키를 기반으로 구성된 기술이다.
- 클라이언트가 마음대로 쿠키의 데이터를 확인할 수 있는 반면, 세션은 데이터를 서버에만 저장함.
- 세션 데이터는 서버에 저장 ==== 자물쇠
- 각 데이터 마다 고유한 세션 아이디 만들어짐 === 열쇠
- 그래서 다시 사용자가 서버에 호출할때, 열쇠로 인해 서버는 이 이용자가 어떤 사람인지 판단할 수 있음.
- 서버에 사용자 정보를 저장하고, 클라이언트는 세션 아이디로만 서버와 소통한다.
- 세션 아이디는 쿠키를 사용해서 주고받지 않아도 된다.
- 쿠키보다는 세션이 좀더 안전스
- 이 id 즉 열쇠를 이용해 접근하기 때문에, 세션 데이터에 접근 가능한 건 오직! 서버뿐.
- 쿠키에 보안 취약 부분을 어느정도 해결했다__ 서버에서 관리하니깐
'TIL' 카테고리의 다른 글
23/11/09 TIL __ AWS RDS 와 DDL, DML, DCL, ORM + Sequelize (0) | 2023.11.09 |
---|---|
23/11/08 TIL __ JWT 와 Token (0) | 2023.11.09 |
23/11/06 TIL __ 포트를 죽여도 계속 살아나요(address already in use) (1) | 2023.11.06 |
23/11/05 TIL __ app.use(express.urlencoded({extended: true})); (0) | 2023.11.05 |
23/11/04 TIL __ AWS 배포하기 총정리2 (0) | 2023.11.04 |