Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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
Tags more
Archives
Today
Total
관리 메뉴

seaking110 님의 블로그

Cookie, JWT 본문

Today I Learned

Cookie, JWT

seaking110 2025. 2. 26. 15:06

 

 

HTTP

  • 특징
    • Stateless
      • 서버가 클라이언트의 상태를 유지 x
    • Connectionless
      • 각 요청과 응답이 독립적인 연결로 처리, 요청이 끝나면 연결 종료
  • 이러한 특징들로 인해 상태 관리 방법 필요

 

알아둬야할점!

  • 모든 HTTP는 무조건 Stateless, Connectionless가 아님
  • keep-alive
    • TCP 연결을 재사용하여 효율성을 높이는 기능
    • 헤더에 Connection : keep-alive
  • SSE
    • Server-Sent Events로 단순히 여러 요청을 계속 보내는 것이 아니라 실시간 전송을 위해 연결을 유지

 

 

HTTP 구조

  • 크게 헤더와 본문(Body)로 구성
  • 헤더에 쿠키가 존재

 

Cookie

  • 상태가 없는 HTTP 프로토콜에서 상태 정보를 유지하기 위함
  • Cookie(Set-Cookie)는 미리 예약된 이름의 HTTP 헤더에 존재하는 Key/value

 

HTTP Response (서버 -> 클라이언트)

  • set-Cookie 키로 설정
  • Secure : https만 허용
  • HttpOnly : 클라이언트가 쿠키에 접근 금지 
  • SameSite : 요청 도메인과 쿠키에 설정된 도메인이 같은 경우만 쿠키 전송

 

  • HttpOnly를 제외한 모든 설정은 클라이언트에서도 설정이 가능
  • 즉 HttpOnly를 걸어 클라이언트가 쿠키에 접근을 하지 못하게 막으면 보안을 위한 다른 설정들이 의미 없어짐

 

 

세션

  • Stateful
  • 즉 서버에 상태 데이터를 저장하는 것

 

JWT (JSON Web Token)

  • JWT 역시 Stateless
  • 세션이 백엔드 서버에 저장된 것이라면 JWT는 클라이언트에 로그인 정보가 저장된 상태
  • 즉 서버는 별도의 로그인 정보를 유지하지 않고 클라이언트가 보유한 토큰을 통해 인증을 처리
  • JWT 토큰은 암호화된 것이 아님
  • (헤더+페이로드)를 base64로 감은 것 (인코딩한것)
  • .으로 헤더 페이로드 서명으로 구분
  • 암호화된것이 아니고 사실은 Base64URL 인코딩에 불과
  • BASE64는 인코딩시 + / = 등 url에 들어갈 수 있는 것을 포함 
  • BASE64URL에는 + 는 -로 / 는 _로 = 는 제거하여 에러 상황 방지

 

 

 

 

 

'Today I Learned' 카테고리의 다른 글

트러블 슈팅  (0) 2025.02.27
프로젝트에 부족한 부분을 찾아 리팩토링  (0) 2025.02.27
테스트 코드!  (0) 2025.02.25
N+1 문제 + 동시성 제어  (0) 2025.02.24
HttpMessageConverter란 무엇인가  (0) 2025.02.21