ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Cookie, Session
    Note 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

    댓글