[μ»΄ν“¨ν„°λ„€νŠΈμ›Œν¬] 쿠킀와 μ„Έμ…˜

πŸ§ͺ Computer Science/Computer Network

쿠킀와 μ„Έμ…˜μ˜ ν•„μš”μ„±

  • HTTP ν”„λ‘œν† μ½œμ€ λΉ„μ—°κ²° 지ν–₯, μƒνƒœμ •λ³΄ μœ μ§€ μ•ˆν•¨ λ“±μ˜ νŠΉμ§•μœΌλ‘œ λͺ¨λ“  μš”μ²­ κ°„ μ˜μ‘΄κ΄€κ³„κ°€ μ—†λ‹€.
  • 즉, ν˜„μž¬ μ ‘μ†ν•œ μ‚¬μš©μžκ°€ 이전에 μ ‘μ†ν–ˆλ˜ μ‚¬μš©μžμ™€ 같은 μ‚¬μš©μžμΈμ§€ μ•„λ‹Œμ§€ μ•Œ 수 μžˆλŠ” 방법이 μ—†λ‹€.
  • κ³„μ†ν•΄μ„œ 연결을 μœ μ§€ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— λ¦¬μ†ŒμŠ€ λ‚­λΉ„κ°€ μ€„μ–΄λ“œλŠ” 것이 큰 μž₯μ μ΄μ§€λ§Œ, 톡신할 λ•Œλ§ˆλ‹€ μƒˆλ‘œ μ—°κ²°ν•˜κΈ° λ•Œλ¬Έμ— ν΄μ•„μ΄μ–ΈνŠΈλŠ” 맀 μš”μ²­λ§ˆλ‹€ 인증을 ν•΄μ•Ό ν•œλ‹€λŠ” 단점이 μžˆλ‹€.
  • 이전 μš”μ²­κ³Ό ν˜„μž¬ μš”μ²­μ΄ 같은 μ‚¬μš©μžμ˜ μš”μ²­μΈμ§€ μ•ŒκΈ° μœ„ν•΄μ„œλŠ” μƒνƒœλ₯Ό μœ μ§€ν•΄μ•Ό ν•œλ‹€.
  • HTTP ν”„λ‘œν† μ½œμ—μ„œ μƒνƒœλ₯Ό μœ μ§€ν•˜κΈ° μœ„ν•œ 기술둜 쿠킀와 μ„Έμ…˜μ΄ μžˆλ‹€.

μΏ ν‚€(Cookie)

  • κ°œλ…

    • ν΄λΌμ΄μ–ΈνŠΈ λ‘œμ»¬μ— μ €μž₯λ˜λŠ” 킀와 값이 λ“€μ–΄μžˆλŠ” νŒŒμΌμ΄λ‹€.
    • 이름, κ°’, 유효 μ‹œκ°„, 경둜 등을 ν¬ν•¨ν•˜κ³  μžˆλ‹€.
    • ν΄λΌμ΄μ–ΈνŠΈμ˜ μƒνƒœ 정보λ₯Ό λΈŒλΌμš°μ €μ— μ €μž₯ν•˜μ—¬ μ°Έμ‘°ν•œλ‹€.
  • ꡬ성 μš”μ†Œ

    • μΏ ν‚€μ˜ 이름(name)

    • μΏ ν‚€μ˜ κ°’(value)

    • μΏ ν‚€μ˜ λ§Œλ£Œμ‹œκ°„(Expires)

    • μΏ ν‚€λ₯Ό 전솑할 도메인 이름(Domain)

    • μΏ ν‚€λ₯Ό 전솑할 경둜(Path)

    • λ³΄μ•ˆ μ—°κ²° μ—¬λΆ€(Secure)

    • HttpOnly μ—¬λΆ€(HttpOnly)


  • λ™μž‘ 방식

a. μ›Ή λΈŒλΌμš°μ €κ°€ μ„œλ²„μ— μš”μ²­
b. μƒνƒœλ₯Ό μœ μ§€ν•˜κ³  싢은 값을 μΏ ν‚€λ‘œ 생성
c. μ„œλ²„κ°€ 응닡할 λ•Œ HTTP 헀더(Set-Cookie)에 μΏ ν‚€λ₯Ό ν¬ν•¨ν•΄μ„œ 전솑

Set-Cookie: id=doy

d. 전달 받은 μΏ ν‚€λŠ” μ›Ή λΈŒλΌμš°μ €μ—μ„œ κ΄€λ¦¬ν•˜κ³  μžˆλ‹€κ°€ λ‹€μŒ μš”μ²­ λ•Œ μΏ ν‚€λ₯Ό HTTP 헀더에 λ„£μ–΄μ„œ 전솑

cookie: id=doy

e. μ„œλ²„μ—μ„œλŠ” μΏ ν‚€ 정보λ₯Ό 읽어 이전 μƒνƒœ 정보λ₯Ό ν™•μΈν•œ ν›„ 응닡


  • μΏ ν‚€ μ‚¬μš© 예
    • 아이디, λΉ„λ°€λ²ˆν˜Έ μ €μž₯
    • μ‡Όν•‘λͺ° μž₯λ°”κ΅¬λ‹ˆ

μ„Έμ…˜(Session)

  • κ°œλ…

    • 일정 μ‹œκ°„λ™μ•ˆ 같은 λΈŒλΌμš°μ €λ‘œλΆ€ν„° λ“€μ–΄μ˜€λŠ” μš”μ²­μ„ ν•˜λ‚˜μ˜ μƒνƒœλ‘œ 보고 κ·Έ μƒνƒœλ₯Ό μœ μ§€ν•˜λŠ” κΈ°μˆ μ΄λ‹€.

    • 즉, μ›Ή λΈŒλΌμš°μ €λ₯Ό 톡해 μ„œλ²„μ— μ ‘μ†ν•œ 이후뢀터 λΈŒλΌμš°μ €λ₯Ό μ’…λ£Œν•  λ•ŒκΉŒμ§€ μœ μ§€λ˜λŠ” μƒνƒœμ΄λ‹€.


  • λ™μž‘ 방식

a. μ›Ή λΈŒλΌμš°μ €κ°€ μ„œλ²„μ— μš”μ²­
b. μ„œλ²„κ°€ ν•΄λ‹Ή μ›Ή λΈŒλΌμš°μ €(ν΄λΌμ΄μ–ΈνŠΈ)에 μœ μΌν•œ ID(Session ID)λ₯Ό 뢀여함
c. μ„œλ²„κ°€ 응닡할 λ•Œ HTTP 헀더(Set-Cookie)에 Session IDλ₯Ό ν¬ν•¨ν•΄μ„œ 전솑. 쿠킀에 Session IDλ₯Ό JSESSIONIDλΌλŠ” μ΄λ¦„μœΌλ‘œ μ €μž₯

Set-Cookie: JSESSIONID=xslei13f

d. μ›Ή λΈŒλΌμš°μ €λŠ” 이후 μ›Ή λΈŒλΌμš°μ €λ₯Ό λ‹«κΈ°κΉŒμ§€ λ‹€μŒ μš”μ²­ λ•Œ λΆ€μ—¬λœ Session IDκ°€ λ‹΄κ²¨μžˆλŠ” μΏ ν‚€λ₯Ό HTTP 헀더에 λ„£μ–΄μ„œ 전솑

Cookie: JSESSIONID=xslei13f

e. μ„œλ²„λŠ” μ„Έμ…˜ IDλ₯Ό ν™•μΈν•˜κ³ , ν•΄λ‹Ή μ„Έμ…˜μ— κ΄€λ ¨λœ 정보λ₯Ό ν™•μΈν•œ ν›„ 응닡


  • μ„Έμ…˜ μ‚¬μš© 예
    • 둜그인

μ„Έμ…˜λ„ μΏ ν‚€λ₯Ό μ‚¬μš©ν•˜μ—¬ 값을 μ£Όκ³  λ°›μœΌλ©° ν΄λΌμ΄μ–ΈνŠΈμ˜ μƒνƒœ 정보λ₯Ό μœ μ§€ν•œλ‹€.
즉, μƒνƒœ 정보λ₯Ό μœ μ§€ν•˜λŠ” μˆ˜λ‹¨μ€ 쿠킀이닀.


  • 쿠킀와 μ„Έμ…˜μ˜ 차이점
    • μ €μž₯ μœ„μΉ˜
      • μΏ ν‚€: ν΄λΌμ΄μ–ΈνŠΈ
      • μ„Έμ…˜: μ„œλ²„
    • λ³΄μ•ˆ
      • μΏ ν‚€: ν΄λΌμ΄μ–ΈνŠΈμ— μ €μž₯λ˜λ―€λ‘œ λ³΄μ•ˆμ— μ·¨μ•½
      • μ„Έμ…˜: μΏ ν‚€λ₯Ό μ΄μš©ν•΄ Session ID만 μ €μž₯ν•˜κ³  이 κ°’μœΌλ‘œ κ΅¬λΆ„ν•΄μ„œ μ„œλ²„μ—μ„œ μ²˜λ¦¬ν•˜λ―€λ‘œ 비ꡐ적 λ³΄μ•ˆμ„±μ΄ μ’‹λ‹€.
    • 라이프사이클
      • μΏ ν‚€: λ§Œλ£Œμ‹œκ°„μ— 따라 λΈŒλΌμš°μ €λ₯Ό μ’…λ£Œν•΄λ„ κ³„μ†ν•΄μ„œ λ‚¨μ•„μžˆμ„ 수 μžˆλ‹€.
      • μ„Έμ…˜: λ§Œλ£Œμ‹œκ°„μ„ μ •ν•  수 μžˆμ§€λ§Œ λΈŒλΌμš°μ €κ°€ μ’…λ£Œλ˜λ©΄ λ§Œλ£Œμ‹œκ°„μ— 상관없이 μ‚­μ œλœλ‹€.
    • 속도
      • μΏ ν‚€: ν΄λΌμ΄μ–ΈνŠΈμ— μ €μž₯λ˜μ–΄μ„œ μ„œλ²„μ— μš”μ²­ μ‹œ λΉ λ₯΄λ‹€.
      • μ„Έμ…˜: μ‹€μ œ μ €μž₯된 정보가 μ„œλ²„μ— μžˆμœΌλ―€λ‘œ μ„œλ²„μ˜ μ²˜λ¦¬κ°€ ν•„μš”ν•΄ 쿠킀보닀 λŠλ¦¬λ‹€.