๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Web/Concept

[Web] ์ฟ ํ‚ค(Cookie) & ์„ธ์…˜(Session)

๐Ÿ’ก Web์˜ ๊ธฐ๋ณธ์ ์ธ ์ธ์ฆ ๋ฐฉ์‹์„ ์•Œ์•„๋ณด์ž!

    ๋…ธ์…˜์—์„œ ๋ณด๊ธฐ

 

๐Ÿ“Œ ์š”์•ฝ

  • ๊ณตํ†ต์  : ์›น ํ†ต์‹  ๊ฐ„ ์œ ์ง€ํ•˜๋ ค๋Š” ์ •๋ณด(Ex) ๋กœ๊ทธ์ธ ์ •๋ณด ๋“ฑ)๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ
  • ์ฐจ์ด์  : ์ €์žฅ ์œ„์น˜, ์ €์žฅ ํ˜•์‹, ์šฉ๋Ÿ‰ ์ œํ•œ, ๋งŒ๋ฃŒ์‹œ์  ๋“ฑ
    • ์ฟ ํ‚ค : ๊ฐœ์ธ PC์— ์ €์žฅ
    • ์„ธ์…˜ : ์ ‘์†์ค‘์ธ ์›น ์„œ๋ฒ„์— ์ €์žฅ

์ฟ ํ‚ค์™€ ์„ธ์…˜ ์‚ฌ์šฉ ์ด์œ  (Feat. HTTP ํŠน์ง•)

  • HTTP(Hypertext Transfer Protocol) ์˜ ํŠน์ง•์ด์ž ์•ฝ์ ์„ ๋ณด์•ˆํ•˜๊ธฐ ์œ„ํ•จ

HTTP(Hypertext Transfer Protocol) ์˜ ์ •์˜

  • HTTP๋Š” ์ธํ„ฐ๋„ท์ƒ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„/ํด๋ผ์ด์–ธํŠธ ๋ชจ๋ธ์„ ๋”ฐ๋ฅด๋Š” ํ†ต์‹  ๊ทœ์•ฝ

HTTP์˜ ํŠน์ง•

  • ๋น„์—ฐ๊ฒฐ์„ฑ(Connectionless)
    • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญ(Request)์„ ๋ณด๋‚ด๊ณ  → ๊ทธ ์š”์ฒญ์— ๋งž๋Š” ์‘๋‹ต(Response) ์„ ๋ณด๋‚ธ ํ›„ ์—ฐ๊ฒฐ์„ ๋Š๋Š” ์ฒ˜๋ฆฌ ๋ฐฉ์‹
    • HTTP 1.1 ๋ฒ„์ „ : ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜๊ณ , ์žฌํ™œ์šฉ ํ•˜๋Š” ๊ธฐ๋Šฅ์ด Default ๋กœ ์ถ”๊ฐ€ (keep-alive ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ)
  • ๋น„์ƒํƒœ์„ฑ(Stateless)
    • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ƒํƒœ ์ •๋ณด๋ฅผ ๊ฐ€์ง€์ง€ ์•Š๋Š” ์„œ๋ฒ„ ์ฒ˜๋ฆฌ ๋ฐฉ์‹
    • ํด๋ผ์ด์–ธํŠธ์™€ ์ฒซ ๋ฒˆ์งธ ํ†ต์‹ ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์•˜๋‹ค ํ•ด๋„, ๋‘๋ฒˆ์งธ ํ†ต์‹ ์—์„œ ์ด์ „ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ์ฆ‰, HTTP๋Š” ‘์„œ๋ฒ„์˜ ์ž์›์„ ์ ˆ์•ฝ’ํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ๋งˆ๋‹ค ‘์—ฐ๊ฒฐ๊ณผ ํ•ด์ œ’ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค.
  • ๋”ฐ๋ผ์„œ, ์—ฐ๊ฒฐ ์ƒํƒœ๊ฐ€ ์œ ์ง€๋˜์ง€ ์•Š๊ณ , ์—ฐ๊ฒฐ ํ•ด์ œ ํ›„์— ์ƒํƒœ ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค.

์ฟ ํ‚ค์™€ ์„ธ์…˜์˜ ํ•„์š”์„ฑ

  • HTTP์˜ ๋น„์—ฐ๊ฒฐ์„ฑ/๋น„์ƒํƒœ์„ฑ์œผ๋กœ ์ธํ•ด ์‚ฌ์šฉ์ž๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์—†์–ด → ๊ฐ™์€ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ํ•˜๋”๋ผ๋„ ๋งค๋ฒˆ ์ƒˆ๋กœ์šด ์‚ฌ์šฉ์ž๋กœ ์ธ์‹ํ•˜๊ฒŒ๋œ๋‹ค.
  • ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๊ฐ€ ์›น ์‚ฌ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋กœ๊ทธ์ธ์„ ํ•œ ๋ฒˆ ํ•˜๊ณ ๋‚˜๋ฉด → ๊ทธ ์‚ฌ์ดํŠธ์—์„œ๋Š” ๋‹ค์‹œ ๋กœ๊ทธ์ธํ•  ํ•„์š” ์—†์ด, ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€์˜ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ข…๋ฃŒํ–ˆ๋‹ค๊ฐ€ ๋‹ค์‹œ ์ ‘์†ํ–ˆ์„ ๋•Œ์—๋„ ๋กœ๊ทธ์ธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ด๋ ‡๊ฒŒ, HTTP์˜ ๋น„์—ฐ๊ฒฐ์„ฑ/๋น„์ƒํƒœ์„ฑ์„ ๋ณด์™„ํ•ด ‘์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹๋ณ„’ํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ฟ ํ‚ค์™€ ์„ธ์…˜์ด๋‹ค.

์ฟ ํ‚ค(Cookie)

์ฟ ํ‚ค์˜ ๊ฐœ๋…

  • ์ฟ ํ‚ค๋Š” ์›น ์‚ฌ์ดํŠธ ์ ‘์† ์‹œ ์ƒ์„ฑ๋˜๋Š” ์ •๋ณด๋ฅผ ๋‹ด์€ ๋ฐ์ดํ„ฐ ํŒŒ์ผ๋กœ ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €) ๋กœ์ปฌ์— ์ €์žฅ๋œ๋‹ค.
  • ์ฟ ํ‚ค์˜ ๋ฐ์ดํ„ฐ ํ˜•ํƒœ๋Š” Key-Value ๋กœ ๊ตฌ์„ฑ๋˜๊ณ , String ํ˜•ํƒœ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.
  • ๋ธŒ๋ผ์šฐ์ €๋งˆ๋‹ค ์ €์žฅ๋˜๋Š” ์ฟ ํ‚ค๊ฐ€ ๋‹ค๋ฅด๋ฉฐ, ์„œ๋ฒ„์—์„œ๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋‹ค๋ฅด๋ฉด ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋กœ ์ธ์‹
  • ์ฟ ํ‚ค๋Š” ์„œ๋ฒ„๋ฅผ ๋Œ€์‹ ํ•ด์„œ ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ ์ •๋ณด๋ฅผ ๋กœ์ปฌ(์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ด์šฉํ•˜๊ณ  ์žˆ๋Š” ์ปดํ“จํ„ฐ)์— ์ €์žฅํ–ˆ๋‹ค๊ฐ€ → ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•  ๋•Œ, ๊ทธ ์ •๋ณด๋ฅผ ํ•จ๊ป˜ ๋ณด๋‚ด → ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉ์ž๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

์ฟ ํ‚ค์˜ ๊ตฌ์„ฑ์š”์†Œ

  • ์ด๋ฆ„ : ๊ฐ๊ฐ์˜ ์ฟ ํ‚ค๋ฅผ ๊ตฌ๋ณ„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ด๋ฆ„
  • ๊ฐ’ : ์ฟ ํ‚ค์˜ ์ด๋ฆ„๊ณผ ๊ด€๋ จ๋œ ๊ฐ’
  • ์œ ํšจ์‹œ๊ฐ„ : ์ฟ ํ‚ค์˜ ์œ ์ง€์‹œ๊ฐ„
  • ๋„๋ฉ”์ธ : ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•  ๋„๋ฉ”์ธ
  • ๊ฒฝ๋กœ : ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•  ์š”์ฒญ ๊ฒฝ๋กœ

์ฟ ํ‚ค์˜ ํŠน์ง•

  • ํด๋ผ์ด์–ธํŠธ์— ์ด 300๊ฐœ์˜ ์ฟ ํ‚ค ์ €์žฅ ๊ฐ€๋Šฅ
  • ํ•˜๋‚˜์˜ ๋„๋ฉ”์ธ ๋‹น 20๊ฐœ์˜ ์ฟ ํ‚ค๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.
  • ํ•˜๋‚˜์˜ ์ฟ ํ‚ค๋Š” 4KB(=4096byte)๊นŒ์ง€ ์ €์žฅ ๊ฐ€๋Šฅ

์ฟ ํ‚ค์˜ ๋™์ž‘ ์ˆœ์„œ

 

์ฟ ํ‚ค์˜ ๋™์ž‘ ์ˆœ์„œ

 

  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญ(์‚ฌ์šฉ์ž์˜ ์›น์‚ฌ์ดํŠธ ์ ‘๊ทผ)
  • ์›น ์„œ๋ฒ„์—์„œ ์ฟ ํ‚ค ์ƒ์„ฑ
  • HTTP ํ—ค๋”์— ์ฟ ํ‚ค๋ฅผ ํฌํ•จ์‹œ์ผœ ํด๋ผ์ด์–ธํŠธ์— ์‘๋‹ต
MockHttpServletResponse:
           Status = 200
          Headers = [Set-Cookie:"userName=kevin", "password=abc123"]
  • ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ข…๋ฃŒ๋˜์–ด๋„, ์ฟ ํ‚ค ๋งŒ๋ฃŒ ์‹œ๊ฐ„์ด ๋‚จ์€ ๊ฒฝ์šฐ ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ณด๊ด€ํ•˜๊ณ  ์žˆ์Œ
  • ๊ฐ™์€ ์š”์ฒญ์„ ํ•  ๊ฒฝ์šฐ ํด๋ผ์ด์–ธํŠธ๊ฐ€ HTTP ํ—ค๋”์— ์ฟ ํ‚ค๋ฅผ ํ•จ๊ป˜ ์„œ๋ฒ„๋กœ ๋ณด๋ƒ„
MockHttpServletRequest:
      HTTP Method = GET
      Request URI = /user/my/edit
          Headers = [Cookie:"userName=kevin"; "password=abc123"]
  • ์„œ๋ฒ„์—์„œ ์ฟ ํ‚ค๋ฅผ ์ฝ์–ด → ์ด์ „ ์ƒํƒœ ์ •๋ณด๋ฅผ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์žˆ์„ ๋•Œ ์ฟ ํ‚ค๋ฅผ ์—…๋ฐ์ดํ„ฐํ•˜์—ฌ → ๋ณ€๊ฒฝ๋œ ์ฟ ํ‚ค๋ฅผ HTTP ํ—ค๋”์— ํฌํ•จ์‹œ์ผœ ์‘๋‹ต

์ฟ ํ‚ค์˜ ์‚ฌ์šฉ ๋ชฉ์ 

  • ์„ธ์…˜ ๊ด€๋ฆฌ(Session Management) : ๋กœ๊ทธ์ธ, ์‚ฌ์šฉ์ž ๋‹‰๋„ค์ž„, ์ ‘์† ์‹œ๊ฐ„, ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋“ฑ์˜ ์„œ๋ฒ„๊ฐ€ ์•Œ์•„์•ผํ•  ์ •๋ณด๋“ค์„ ์ €์žฅ
  • ๊ฐœ์ธํ™”(Personalization) : ์‚ฌ์šฉ์ž๋งˆ๋‹ค ๋‹ค๋ฅด๊ฒŒ ๊ทธ ์‚ฌ๋žŒ์— ์ ์ ˆํ•œ ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ์Œ
  • ํŠธ๋ž˜ํ‚น(Tracking) : ์‚ฌ์šฉ์ž์˜ ํ–‰๋™๊ณผ ํŒจํ„ด์„ ๋ถ„์„ํ•˜๊ณ  ๊ธฐ๋ก

์ฟ ํ‚ค ์‚ฌ์šฉ ์˜ˆ์‹œ

  • ์‚ฌ์ดํŠธ๋ฅผ ๋ฐฉ๋ฌธํ•˜์—ฌ ๋กœ๊ทธ์ธ ํ•  ๋•Œ “์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ €์žฅํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?” / “๋กœ๊ทธ์ธ ์ƒํƒœ ์œ ์ง€”
  • ํŒ์—…์˜ ์ผ์ฃผ์ผ๊ฐ„ ๋‹ค์‹œ ๋ณด์ง€ ์•Š๊ธฐ ์ฒดํฌ
  • ์ตœ๊ทผ ๊ฒ€์ƒ‰ํ•œ ์ƒํ’ˆ๋“ค์„ ๊ด‘๊ณ ์—์„œ ์ถ”์ฒœ
  • ์‡ผํ•‘๋ชฐ ์žฅ๋ฐ”๊ตฌ๋‹ˆ

์ฟ ํ‚ค์˜ ๋‹จ์ 

  • ๋ฐฉ๋ฌธํ–ˆ๋˜ ์›น ์‚ฌ์ดํŠธ์— ๋Œ€ํ•œ ์ •๋ณด ๋ฐ ๊ฐœ์ธ ์ •๋ณด๊ฐ€ ๊ธฐ๋ก๋˜์–ด ์‚ฌ์ƒํ™œ ์นจํ•ด ์†Œ์ง€ ์กด์žฌ
    • ์ด๋ฅผ ํ•ด์†Œํ•˜๊ธฐ ์œ„ํ•ด, ์›น ๋ธŒ๋ผ์šฐ์ € ์ž์ฒด์— ์ฟ ํ‚ค ๊ฑฐ๋ถ€ ๊ธฐ๋Šฅ์ด ์žˆ์ง€๋งŒ
    • ์ฟ ํ‚ค์— ๋Œ€ํ•œ ๊ฑฐ๋ธŒ๊ฐ€ ์›น ๋ธŒ๋ผ์šฐ์ €์— ์„ค์ •๋˜์–ด ์žˆ๋Š”๊ฒฝ์šฐ ์ฟ ํ‚ค ๋ณธ๋ž˜์˜ ๋ชฉ์ ์ธ ์›น ๋ธŒ๋ผ์šฐ์ €์™€์˜ ์—ฐ๊ฒฐ์„ ์ง€์†์‹œํ‚ค๋Š” ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
  • ์„œ๋ฒ„๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ €์žฅ๋˜๋Š” ์ •๋ณด์ด๋ฏ€๋กœ, ์ž„์˜๋กœ ๊ณ ์น˜๊ฑฐ๋‚˜ ์ง€์šธ ์ˆ˜ ์žˆ๊ณ , ๊ฐ€๋กœ์ฑ„๊ธฐ ์‰ฌ์›Œ ๋ณด์•ˆ ์ทจ์•ฝ ๋ฌธ์ œ ์กด์žฌ
    • ์ฟ ํ‚ค์—๋Š” ๋ฏผ๊ฐํ•˜๊ฑฐ๋‚˜ ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ๋‹ด๋Š” ๊ฒƒ์ด ์œ„ํ—˜ํ•˜๋‹ค.
  • ์ด๋Ÿฌํ•œ ์ฟ ํ‚ค์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ‘์„ธ์…˜’์ด๋‹ค.

 

์„ธ์…˜(Session)

์„ธ์…˜์˜ ๊ฐœ๋…

  • ์„ธ์…˜์€ ์ฟ ํ‚ค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ณ  ์žˆ์ง€๋งŒ, ์‚ฌ์šฉ์ž ์ •๋ณด ํŒŒ์ผ์„ ๋ธŒ๋ผ์šฐ์ €์— ์ €์žฅํ•˜๋Š” ์ฟ ํ‚ค์™€ ๋‹ฌ๋ฆฌ, ์„ธ์…˜์€ ์„œ๋ฒ„ ์ธก์—์„œ ๊ด€๋ฆฌํ•œ๋‹ค.
  • ์„œ๋ฒ„์—์„œ๋Š” ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด ์„ธ์…˜ ID๋ฅผ ๋ถ€์—ฌํ•˜๋ฉฐ,
    • ์ด๋•Œ ์ ‘์† ์‹œ๊ฐ„์— ์ œํ•œ์„ ๋‘์–ด ์ผ์ • ์‹œ๊ฐ„ ์‘๋‹ต์ด ์—†์œผ๋ฉด ์ •๋ณด๊ฐ€ ์œ ์ง€๋˜์ง€ ์•Š๊ฒŒ ์„ค์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ์„ธ์…˜ ID๋Š” ์›น ๋ธŒ๋ผ์šฐ์ € ๋‹น 1๊ฐœ์”ฉ ์ƒ์„ฑ๋˜์–ด ์›น ์ปจํ…Œ์ด๋„ˆ์— ์ €์žฅ๋˜๊ณ  → ๋ธŒ๋ผ์šฐ์ € ์ข…๋ฃŒ ์‹œ ์†Œ๋ฉธ๋œ๋‹ค.
    • ์ฆ‰, ๋ฐฉ๋ฌธ์ž๊ฐ€ ์›น ์„œ๋ฒ„์— ์ ‘์†ํ•ด์žˆ๋Š” ์ƒํƒœ๋ฅผ ํ•˜๋‚˜์˜ ๋‹จ์œ„๋กœ ๋ณด๊ณ , ๊ทธ๊ฒƒ์„ ์„ธ์…˜์ด๋ผ ํ•œ๋‹ค.
  • ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„์— ์ ‘์†ํ•ด์„œ → ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ข…๋ฃŒํ•  ๋•Œ๊นŒ์ง€ ์ธ์ฆ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•œ๋‹ค.
  • ๋กœ๊ทธ์ธํ•œ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด์„œ๋งŒ ์„ธ์…˜์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ,
    • ์ฟ ํ‚ค์˜ ๊ฒฝ์šฐ, ์‚ฌ์šฉ์ž์˜ ์›น ๋ธŒ๋ผ์šฐ์ €์— ์ €์žฅ๋˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ๋กœ๊ทธ์ธ ์œ ๋ฌด์™€ ๊ด€๊ณ„์—†์ด ์‚ญ์ œ๋˜์ง€ ์•Š์œผ๋ฉด ๋“€์ง€๋œ๋‹ค.
  • ๋กœ๊ทธ์•„์›ƒ์„ ํ•˜๋Š” ๊ฒฝ์šฐ ์ƒˆ๋กœ์šด ์‚ฌ์šฉ์ž๋กœ ์ธ์‹ํ•˜์—ฌ ์ƒˆ๋กœ์šด ์„ธ์…˜์ด ์ƒ์„ฑ๋œ๋‹ค.

์„ธ์…˜์˜ ํŠน์ง•

  • ์›น ์„œ๋ฒ„์— ์›น ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค.
  • ์›น ์„œ๋ฒ„์— ์ €์žฅ๋˜๋Š” ์ฟ ํ‚ค(=์„ธ์…˜์ฟ ํ‚ค)
  • ๊ฐ ํด๋ผ์ด์–ธํŠธ์— ๊ณ ์œ  ID๋ฅผ ๋ถ€์—ฌ
  • ์„ธ์…˜ ID๋กœ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ตฌ๋ถ„ํ•ด ํด๋ผ์ด์–ธํŠธ์˜ ์š”๊ตฌ์— ๋งž๋Š” ์„œ๋น„์Šค๋ฅผ ์ œ๊ณต
  • ๋ณด์•ˆ ๋ฉด์—์„œ ์ฟ ํ‚ค๋ณด๋‹ค ์šฐ์ˆ˜(๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ซ๊ฑฐ๋‚˜, ์„œ๋ฒ„์—์„œ ์„ธ์…˜ ์‚ญ์ œ ์‹œ์—๋งŒ ์‚ญ์ œ๋จ)
  • ์ €์žฅ ์šฉ๋Ÿ‰์— ์ œํ•œ์€ ์—†์ง€๋งŒ, ์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ์„œ๋ฒ„ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋งŽ์ด ์ฐจ์ง€ํ•˜๊ฒŒ ๋œ๋‹ค.

์„ธ์…˜์˜ ๋™์ž‘ ์ˆœ์„œ

 

์„ธ์…˜์˜ ๋™์ž‘ ์ˆœ์„œ

 

  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํŽ˜์ด์ง€ ์ ‘์† ์‹œ(์„œ๋ฒ„์— ์ ‘์† ์‹œ)
  • ์ ‘๊ทผํ•œ ํด๋ผ์ด์–ธํŠธ์˜ Request Header ํ•„๋“œ์ธ Cookie๋ฅผ ํ™•์ธํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•ด๋‹น ์„ธ์…˜ ID๋ฅผ ๋ณด๋ƒˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  • ์„ธ์…˜ ID๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ, ์„ธ์…˜ ID๋ฅผ ๋ฐœ๊ธ‰ํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋Œ๋ ค์ค€๋‹ค.
    • ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ๋กœ๊ทธ์ธ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ์ž‘์„ฑํ•  ๋•Œ, ์•„๋ž˜์™€ ๊ฐ™์ด ์ธ์ฆ ์ •๋ณด๋Š” → ์„œ๋ฒ„์— ์ €์žฅํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ ์‹๋ณ„์ž์ธ JSESSIONID๋ฅผ ์ฟ ํ‚ค์— ๋‹ด๋Š”๋‹ค.
HTTP/1.1 200
Set-Cookie: JSESSIONID=FDB5E30BF20045E8A9AAFC788383680C;
  • ํด๋ผ์ด์–ธํŠธ๋Š” ์„ธ์…˜ ID์— ๋Œ€ํ•ด ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ €์žฅํ•˜๊ณ , ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์— ์š”์ฒญ ์‹œ, ์ด ์ฟ ํ‚ค์˜ ์„ธ์…˜ ID๋ฅผ ๊ฐ™์ด ์„œ๋ฒ„์— ์ „๋‹ฌํ•˜์—ฌ ์š”์ฒญํ•œ๋‹ค.
  • ์„œ๋ฒ„๋Š” ์„ธ์…˜ ID๋ฅผ ์ „๋‹ฌ๋ฐ›์•„ ๋ณ„๋‹ค๋ฅธ ์ž‘์—…์—†์ด, ์„ธ์…˜ ID๋กœ ์„ธ์…˜์— ์žˆ๋Š” ํด๋ผ์ด์–ธํŠธ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉ
  • ํด๋ผ์ด์–ธํŠธ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์„œ๋ฒ„ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ด ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‘๋‹ต

์„ธ์…˜์˜ ์‚ฌ์šฉ ์˜ˆ์‹œ

  • ํ™”๋ฉด์„ ์ด๋™ํ•ด๋„ ๋กœ๊ทธ์ธ ์ƒํƒœ๊ฐ€ ์œ ์ง€๋œ๋‹ค.

์ฟ ํ‚ค์™€ ์„ธ์…˜ ์ฐจ์ด

  ์ฟ ํ‚ค(Cookie) ์„ธ์…˜(Session)
์ €์žฅ ์œ„์น˜ ํด๋ผ์ด์–ธํŠธ ์„œ๋ฒ„
์ €์žฅ ํ˜•์‹ Text Object
๋งŒ๋ฃŒ ์‹œ์  ์ฟ ํ‚ค ์ €์žฅ ์‹œ ์„ค์ •(์„ค์ •์ด ์—†์„ ๊ฒฝ์šฐ, ๋ธŒ๋ผ์šฐ์ € ์ข…๋ฃŒ ์‹œ ๋งŒ๋ฃŒ) ์•Œ ์ˆ˜ ์—†์Œ
์‚ฌ์šฉํ•˜๋Š” ์ž์›(๋ฆฌ์†Œ์Šค) ํด๋ผ์ด์–ธํŠธ์˜ ๋ฆฌ์†Œ์Šค ์„œ๋ฒ„์˜ ๋ฆฌ์†Œ์Šค
์šฉ๋Ÿ‰ ์ œํ•œ ์ด 300๊ฐœ
๋„๋ฉ”์ธ ๋‹น 20๊ฐœ
1๊ฐœ์˜ ์ฟ ํ‚ค๋‹น 4KB
์ œํ•œ ์—†์Œ
์†๋„ ์„ธ์…˜๋ณด๋‹ค ๋น ๋ฆ„ ์ฟ ํ‚ค๋ณด๋‹ค ๋Š๋ฆผ
๋ณด์•ˆ ์„ธ์…˜๋ณด๋‹ค ๋ณด์•ˆ ์ทจ์•ฝ ์ฟ ํ‚ค๋ณด๋‹ค ๋ณด์•ˆ ์œ ๋ฆฌ

 

  • ์ฟ ํ‚ค๊ณผ ์„ธ์…˜์€ ๋น„์Šทํ•œ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ๋™์ž‘์›๋ฆฌ๋„ ๋น„์Šทํ•˜๋‹ค. (์„ธ์…˜๋„ ๊ฒฐ๊ตญ ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ)
  • ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ : ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜๋Š” ์œ„์น˜
    • ์ฟ ํ‚ค๋Š” ์„œ๋ฒ„์˜ ์ž์›์„ ์ „ํ˜€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ
    • ์„ธ์…˜์€ ์„œ๋ฒ„์˜ ์ž์›์„ ์‚ฌ์šฉ
  • ๋ณด์•ˆ : ์„ธ์…˜ > ์ฟ ํ‚ค
    • ์ฟ ํ‚ค๋Š” ํด๋ผ์ด์–ธํŠธ ๋กœ์ปฌ์— ์ €์žฅ๋˜์–ด, ๋ณ€์ž˜๋˜๊ฑฐ๋‚˜ Request์—์„œ Snipping ๋‹นํ•  ์šฐ๋ ค ์กด์žฌ
    • ์„ธ์…˜์€ ์ฟ ํ‚ค๋ฅผ ์ด์šฉํ•ด ์„ธ์…˜ ID๋งŒ ์ €์žฅํ•˜๊ณ , ๊ทธ๊ฒƒ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์„œ๋ฒ„์—์„œ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ ๋น„๊ต์  ๋ณด์•ˆ์„ฑ์ด ๋†’์Œ
  • ์š”์ฒญ ์†๋„ : ์„ธ์…˜ < ์ฟ ํ‚ค
    • ์„ธ์…˜์€ ์„œ๋ฒ„์˜ ์ฒ˜๋ฆฌ๋ฅผ ํ•„์š”๋กœ ํ•˜๋ฏ€๋กœ ์†๋„๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ๋Š๋ฆผ
  • ๋ผ์ดํ”„ ์‚ฌ์ดํด
    • ์ฟ ํ‚ค๋„ ๋งŒ๋ฃŒ์‹œ๊ฐ„์ด ์กด์žฌํ•˜์ง€๋งŒ, ํŒŒ์ผ๋กœ ์ €์žฅ๋˜์–ด ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ข…๋ฃŒํ•ด๋„ ๊ณ„์†ํ•ด์„œ ์ •๋ณด๊ฐ€ ๋‚จ์„ ์ˆ˜ ์žˆ์Œ
      • ๋งŒ๋ฃŒ๊ธฐ๊ฐ„์„ ์—ฌ์œ ๋กญ๊ฒŒ ์žก์•„๋‘๋ฉด ์ฟ ํ‚ค๋ฅผ ์‚ญ์ œํ•  ๋•Œ๊นŒ์ง€ ์œ ์ง€ ๊ฐ€๋Šฅ
    • ์„ธ์…˜๋„ ๋งŒ๋ฃŒ์‹œ๊ฐ„์„ ์ •ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ๋งŒ๋ฃŒ์‹œ๊ฐ„์— ์ƒ๊ด€์—†์ด ์‚ญ์ œ๋จ
      • ์˜ˆ๋ฅผ ๋“ค์–ด, ํฌ๋กฌ์—์„œ ๋‹ค๋ฅธ ํƒญ์„ ์‚ฌ์šฉํ•ด๋„ ์„ธ์…˜ ๊ณต์œ , ๋‹ค๋ฅธ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๋‹ค๋ฅธ ์„ธ์…˜ ์‚ฌ์šฉ
  • ์„ธ์…˜์€, ์„œ๋ฒ„์˜ ์ž์›์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋ฌด๋ถ„๋ณ„ํ•˜๊ฒŒ ๋งŒ๋“ค ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ๋‹นํ•  ์ˆ˜ ์—†๊ฒŒ ๋˜๊ณ , ์†๋„๊ฐ€ ๋Š๋ ค์งˆ ์ˆ˜ ์žˆ์–ด ์ฟ ํ‚ค๊ฐ€ ์œ ๋ฆฌํ•œ ๊ฒฝ์šฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค.

์ฟ ํ‚ค์™€ ์„ธ์…˜ Vs ์บ์‹œ

  • ์บ์‹œ๋Š” ์ด๋ฏธ์ง€๋‚˜ css, js ํŒŒ์ผ ๋“ฑ์„ ๋ธŒ๋ผ์šฐ์ €๋‚˜ ์„œ๋ฒ„ ์•ž ๋‹จ์— ์ €์žฅํ•ด๋†“๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ
  • ํ•œ ๋ฒˆ ์บ์‹œ์— ์ €์žฅ๋˜๋ฉด, ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ฐธ๊ณ ํ•˜๋ฏ€๋กœ
    • ์ด๋•Œ ์บ์‹œ๋ฅผ ์ง€์›Œ์ฃผ๊ฑฐ๋‚˜
    • ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ ์‘๋‹ต์„ ๋ณด๋‚ผ ๋•Œ ํ—ค๋”์— ์บ์‹œ ๋งŒ๋ฃŒ ์‹œ๊ฐ„์„ ๋ช…์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•
    ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์„œ๋ฒ„์—์„œ ๋ณ€๊ฒฝ์ด ๋˜์–ด๋„ ์‚ฌ์šฉ์ž๋Š” ๋ณ€๊ฒฝ์ด ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ผ ์ˆ˜ ์žˆ๋Š”๋ฐ,

 

์„ธ์…˜์€ ์‚ฌ์šฉ์ž ์ˆ˜ ๋งŒํผ ์„œ๋ฒ„ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜์—ฌ, ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ํ† ํฐ ๊ธฐ๋ฐ˜์˜ ์ธ์ฆ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

  • ๊ทธ ์ค‘ JWT(JSON WEB Token)์ด ์กด์žฌํ•˜๋Š” ๊ฒƒ