-
Cookie, SessionNote 2020. 12. 17. 18:20
HTTPS
Hyper Text Transfer Protocol Secure Socket layer
HTTPS는 HTTP 요청을 SSL 혹은 TLS라는 알고리즘을 이용해,
HTTP 통신을 하는 과정에서 내용을 암호화하여 데이터를 전송하는 방법이다.
HTTP 프로토콜 내용을 암호화(HTTP + Secure(보안 기능))
특징
1. 인증서: 데이터 제공자 신원 보장, 도메인 종속
2. CA(certificate authority): 공인 인증서 발급 기관
3. 비대칭 키 암호화암호화는 일련의 정보를 임의의 방식을 사용하여 다른 형태로 변환하여 해당 방식에 대한 정보를 소유한 사람을 제외하고 이해할 수 없도록 '알고리즘'을 이용해 정보를 관리하는 과정
Hashing
어떠한 문자열에 '임의의 연산'을 적용하여 다른 문자열로 변환하는 것
- 모든 값에 대해 해시 값을 계산하는데 오래 걸리지 않아야 한함
- 최대한 해시 값을 피해야 하며, 모든 값은 고유한 해시 값을 가짐
- 아주 작은 단위의 변경이라도 완전히 다른 해시 값을 가져야 함
Salt
암호화해야 하는 값에 어떤 '별도의 값'을 추가하여 결과를 변형하는 것
- 암호화만 해놓는다면 해시된 결과가 늘 동일
- 원본 값에 임의의 약속된 '별도의 문자열'을 추가하여 해시를 진행한다면, 기존 해시값과 전혀 다른 해시값이 반환되어 알고리즘이 노출되더라도 원본 값을 보호할 수 있도록 하는 안전장치
기존: (암호화하려는 값) => (hash 값)
Salt 사용: (암호화하려는 값) + (Salt 용 값) => (hash 값)
Cookie
서버가 웹 브라우저에 정보를 저장하고 불러올 수 있는 수단
사용자가 의류 쇼핑몰 사이트의 페이지를 마구 돌아다녀도 장바구니에 그 정보가 유지되는 있는 이유가 바로 쿠키 덕분이다. HTTP는 stateless(무상태성)이지만 쿠키 덕분에 정보가 유지되고 있다.
동작방식
1. 클라이언트가 서버에 로그인 요청
2. 서버는 클라이언트의 로그인 요청의 유효성을 확인(아이디, 비밀번호 검사)
응답헤더에 set-cookie: user=jackrose를 추가하여 응답
3. 클라이언트는 이후 서버에 요청할 때 전달받은 cookie: user=jackrose 쿠키를 자동으로 요청헤더에 추가하여 요청
쿠키의 기한이 정해져 있지 않고 명시적으로 지우지 않는다면 반영구적으로 쿠키가 남아있게 된다.
options
Domain 서버와 요청의 도메인이 일치하는 경우 쿠키 전송 Path 서버와 요청의 세부경로가 일치하는 경우 쿠키 전송 MaxAge or Expires 쿠키의 유효기간 설정 HttpOnly 스크립트의 쿠키 접근 가능 여부 결정 Secure HTTPS 프로토콜에서만 쿠키 전송 여부 결정 SameSite CORS 요청의 경우 옵션 및 메서드에 따라 쿠키 전송 여부 결정 SameSite 옵션에 따른 서버의 쿠키 전송 여부
Lax GET 메서드 요청만 쿠키 전송 가능 Strict 쿠키 전송 불가 None 모든 메서드 요청에 대해 쿠키 전송 가능 * sameSite="none" 옵션은 Secure 쿠키 옵션이 필요
Session
브라우저가 종료되기 전까지 클라이언트의 요청을 유지하게 해주는 기술
동작방식
1. 클라이언트가 서버에 로그인 요청
2. 서버는 클라이언트의 로그인 요청의 유효성 확인(아이디, 비밀번호) 후에 unique한 id를 sessionid라는 이름으로 저장
3. 서버가 응답할 때 응답헤더에 set-cookie: sessionid:a2d4asfg를 추가하여 응답
4. 클라이언트는 이후 서버에 요청할 때 전달받은 sessionid:a2d4asfg 쿠키를 자동으로 요청헤더에 추가하여 요청
세션의 내용은 서버에 저장되기 때문에 계속 늘어나는 경우 서버에 부하가 발생할 수 있다.
Cooke & Session
설명 접속 상태 저장 경로 장점 단점 Cookie 쿠키는 그저
http의 stateless한 것을
보완해주는 도구클라이언트 서버에 부담을 덜어줌 쿠키 그 자체는
인증이 아님Session 접속 상태를 서버가 가짐
(stateful)
접속 상태와 권한 부여를 위해 세션 아이디를
쿠키로 전송서버 신뢰할 수 있는 유저인지
서버에서 추가로 확인 가능하나의 서버에서만
접속 상태를 가지므로
분산에 불리'Note' 카테고리의 다른 글
px, rem, em (0) 2021.01.18 웹페이지 Redirect 구현 (0) 2021.01.17 Axios (0) 2020.12.17 AWS(Amazon Web Services) (0) 2020.12.16 V8 (0) 2020.12.13