‡πŸ‘©‍πŸ’» ‡/ºNetwork

[λ„€νŠΈμ›Œν¬] Cookie & Session

Trudy | 솑연 2024. 7. 19. 03:56

πŸ“ HTTP ν”„λ‘œν† μ½œμ˜ νŠΉμ§•

 

Connectionless; λΉ„μ—°κ²°μ„±

ν΄λΌμ΄μ–ΈνŠΈκ°€ μš”청을 ν•œ ν›„ μ‘닡을 λ°›μœΌλ©΄ κ·Έ μ—°κ²°μ„ λŠμ–΄ λ²„λ¦¬λŠ” νŠΉμ§•

 

ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„κ°€ 연결을 끊기 λ•Œλ¬Έμ—, λΆˆν•„μš”ν•œ 연결을 μœ μ§€ν•˜μ§€ μ•Šμ•„ μ„œλ²„μ˜ μžμ›μ„ μ ˆμ•½ν•  수 μžˆλ‹€. λ”°λΌμ„œ HTTP ν”„λ‘œν† μ½œμ΄ κ°„λ‹¨ν•˜κ³  νš¨μœ¨μ μ΄λΌλŠ” μž₯점이 μžˆλ‹€. 

 

Stateless; λ¬΄μƒνƒœμ„±

ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„κ°€ 톡신을 ν•  λ•Œ, 이전 ν†΅μ‹ μ˜ μƒνƒœλ₯Ό μœ μ§€ν•˜μ§€ μ•ŠλŠ” 것

 

λ¬΄μƒνƒœμ„±μ€ HTTP ν”„λ‘œν† μ½œμ΄ ν™•μž₯ κ°€λŠ₯ν•˜κ³  μœ μ—°ν•˜λ‹€λŠ” μž₯점이 μžˆλ‹€. ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„κ°€ μƒνƒœλ₯Ό μœ μ§€ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ—, μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ„ μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ ν•„μš”ν•œ λͺ¨λ“  정보λ₯Ό μš”μ²­λ§ˆλ‹€ λ‹€μ‹œ λ°›μ•„μ•Ό ν•œλ‹€. λ”°λΌμ„œ, ν΄λΌμ΄μ–ΈνŠΈκ°€ μš”μ²­ν•˜λŠ” μ„œλΉ„μŠ€κ°€ λ³€κ²½λ˜λ”λΌλ„, μ„œλ²„λŠ” λ³„λ„μ˜ λ³€κ²½ 없이 μš”μ²­μ„ μ²˜λ¦¬ν•  수 μžˆλ‹€.

 

 

 

쿠킀와 μ„Έμ…˜μ€ μœ„ λ¬΄μƒνƒœμ„±μ„ ν•΄κ²°ν•˜μ—¬ μ‚¬μš©μžμ— λŒ€ν•œ μΈμ¦μ„ μœ μ§€ν•˜κ²Œ ν•˜λ„λ‘ μ‚¬μš©ν•œλ‹€. 

 

예λ₯Ό λ“€μ–΄, λ‘œκ·ΈμΈμ„ ν•˜κ³  μƒˆλ‘œ 고침을 ν–ˆμ„ λ•Œ 둜그인이 ν’€λ¦° μƒνƒœκ°€ λ˜μ§€ μ•ŠλŠ” 것이닀. HTTP의 λ¬΄μƒνƒœμ„±, 비연결성을 μƒκ°ν•˜λ©΄ 응닡이 λλ‚˜λ©΄ 연결이 λλ‚˜κΈ° λ•Œλ¬Έμ— 이전 톡신 μƒνƒœκ°€ λ‚¨μ•„μžˆμ§€ μ•Šμ„ 것이닀. 그러면 μƒˆλ‘œκ³ μΉ¨ν•  λ•Œλ§ˆλ‹€ 둜그인 μš”μ²­μ„ λ³΄λ‚΄μ•Όν•˜κΈ° λ•Œλ¬Έμ— μžμ›μ΄ 맀우 λ‚­λΉ„κ°€ λœλ‹€. κ·Έλ ‡κ²Œ λ™μž‘ν•˜μ§€ μ•ŠλŠ” 것은 μΏ ν‚€-μ„Έμ…˜μ΄ 있기 λ•Œλ¬Έμ΄λ‹€. 

 


πŸ“Cookie와 Session의 차이점

이 λ‘˜μ˜ κ°€μž₯ 큰 차이점은 어디에 μ €μž₯ λ˜λŠ” 지이닀. 

 

CookieλŠ” Client에 μ €μž₯되고,

Session은 Server에 μ €μž₯λœλ‹€. 

 

μΏ ν‚€λŠ” μ›Ή μ„œλ²„κ°€ μ›Ή λΈŒλΌμš°μ €μ—κ²Œ μž‘μ€ 기둝 정보 νŒŒμΌμ„ μ£ΌλŠ” 것이닀. 그럼 λ‹€μŒμ— λΈŒλΌμš°μ €μ—μ„œ μš”μ²­μ„ 보낼 λ•Œ ν—€λ”μ˜ Set-Cookie에 λ‹΄μ•„μ„œ μš”μ²­μ„ μ „λ‹¬ν•˜κ²Œ λœλ‹€. ν•˜μ§€λ§Œ μ΄λ ‡κ²Œ μΏ ν‚€λ§Œ μ‚¬μš©ν•˜λŠ” 방식은 λ³΄μ•ˆμ— μ·¨μ•½ν•˜λ‹€. 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄μ„œ λ“±μž₯ν•œ 것이 Session이닀. 

 

Cookie와 Session을 μ΄μš©ν•΄μ„œ λ‘œκ·ΈμΈμ„ μœ μ§€μ‹œν‚€λŠ” 방법은 λ°‘ 그림처럼 λ™μž‘ν•œλ‹€.

 

1. μ„Έμ…˜μ€ 기쑴에 쿠킀에 μ €μž₯되던 μ‚¬μš©μž 정보λ₯Ό μ„œλ²„μ— μ €μž₯이 되고, κ·Έλ•Œ μƒμ„±λ˜λŠ” SessionIdλ₯Ό 쿠킀에 λ‹΄μ•„μ„œ μ „λ‹¬ν•œλ‹€.(abcd)

2. ν΄λΌμ΄μ–ΈνŠΈκ°€ 이제 μš”μ²­μ„ 보낼 λ•Œ 쿠킀에 μžˆλŠ” id값을 μ „λ‹¬ν•œλ‹€. (abcd)

3. μ„œλ²„λŠ” 이 idλ₯Ό 톡해 ν΄λΌμ΄μ–ΈνŠΈλ₯Ό μ‹λ³„ν•œλ‹€. 

 


이런 λ°©μ‹μœΌλ‘œ μ €μž₯ν•˜λ©΄, μΏ ν‚€λ₯Ό ν¬ν•¨ν•œ μš”μ²­μ΄ 외뢀에 λ…ΈμΆœλ˜λ”λΌλ„ SessionID μžμ²΄λŠ” μœ μ˜λ―Έν•œ 정보λ₯Ό λ‹΄κ³  μžˆμ§€ μ•ŠλŠ”λ‹€. λ”°λΌμ„œ λ³΄μ•ˆμ— μ’‹λ‹€. 

 

ν•˜μ§€λ§Œ μ΄λŸ¬ν•œ Cookie와 Session을 μ΄μš©ν•˜λŠ” 방식은 두 κ°€μ§€ 문제점이 μžˆλ‹€. 

 

πŸ“λ³΄μ•ˆμ  문제 

 


πŸ“μ„œλ²„ 이쀑화 문제

μ„œλ²„κ°€ λΆ€ν•˜κ°€ μ˜¨λ‹€λ©΄, 보톡 λΆ€ν•˜ 뢄산을 톡해 ν•΄κ²°ν•œλ‹€. μ„œλ²„ 이쀑화λ₯Ό 톡해 Session을 ν΄λŸ¬μŠ€ν„°λ§μ„ ν•˜λŠ” 경우, λΉ„νš¨μœ¨μ μ΄λΌλŠ” λ¬Έμ œκ°€ 생긴닀.


 

πŸ“.. Cookie & Session 문제 ν•΄κ²° => Token 기반 인증 방식

이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄μ„œ 토큰을 기반으둜 ν•˜λŠ” 둜그인 인증 방식을 μ‚¬μš©ν•œλ‹€. 

 

λ‘œκ·ΈμΈν•  λ•Œ μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ 토큰을 λ°œκΈ‰ν•˜κ³ ,

ν΄λΌμ΄μ–ΈνŠΈλŠ” λ°œκΈ‰λ°›μ€ ν† ν°μœΌλ‘œ 인증 λ°›λŠ” 방식이닀. 

 

μ„Έμ…˜μ„ λͺ¨λ‘ μ„œλ²„μ— μ €μž₯ν•˜λŠ” 것은 μ„œλ²„μ— λΆ€ν•˜κ°€ 크기 λ•Œλ¬Έμ— ν΄λΌμ΄μ–ΈνŠΈμ— μ €μž₯μ‹œν‚€λŠ” 방식을 μš”μ¦˜μ€ 더 많이 μ‚¬μš©ν•œλ‹€.