ํ”„๋กœ๊ทธ๋ž˜๋ฐ/Web

[Web] ์ฟ ํ‚ค(Cookie) vs ์„ธ์…˜(Session) vs ์›น ์Šคํ† ๋ฆฌ์ง€(Web Storage)์˜ ์ฐจ์ด๋ฅผ ์‰ฝ๊ฒŒ ์•Œ์•„๋ด…์‹œ๋‹ค.

์šฉ๋‡ฝ 2023. 11. 22. 23:18
๋ฐ˜์‘ํ˜•

[Web] ์ฟ ํ‚ค(Cookie) vs ์„ธ์…˜(Session) vs ์›น ์Šคํ† ๋ฆฌ์ง€(Web Storage)์˜ ์ฐจ์ด๋ฅผ ์‰ฝ๊ฒŒ ์•Œ์•„๋ด…์‹œ๋‹ค.

๐Ÿ“– ๋“ค์–ด๊ฐ€๋ฉฐ

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ œ์ž‘ํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„ ์ค‘ ํ•˜๋‚˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ ๋ฐ ๊ด€๋ฆฌ์ž…๋‹ˆ๋‹ค.

์ด๋ฅผ ์œ„ํ•ด ์ฟ ํ‚ค, ์„ธ์…˜, ์›น ์Šคํ† ๋ฆฌ์ง€์™€ ๊ฐ™์€ ๊ธฐ์ˆ ๋“ค์ด ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์œผ๋ฉฐ, ์ด๋“ค์€ ๊ฐ๊ฐ์€ ๊ณ ์œ ํ•œ ํŠน์ง•๊ณผ ์žฅ๋‹จ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.


์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ฟ ํ‚ค, ์„ธ์…˜, ์›น ์Šคํ† ๋ฆฌ์ง€์˜ ์ฐจ์ด๋ฅผ ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ณ , ๊ฐ๊ฐ์˜ ์žฅ๋‹จ์ ๊ณผ ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ์ƒํ™ฉ, ๊ทธ๋ฆฌ๊ณ  ๋ณด์•ˆ ์ด์Šˆ์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฟ ํ‚ค(Cookie)

์ฟ ํ‚ค๋Š” ์›น ์„œ๋ฒ„ ๋˜๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ ์ƒ์„ฑ๋˜์–ด ์›น ๋ธŒ๋ผ์šฐ์ €์— ์ €์žฅ๋˜๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก์— ์ €์žฅ๋˜๋Š” key์™€ value๋กœ ์ด๋ฃจ์–ด์ง„ ์ž‘์€ ํ…์ŠคํŠธ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

 

์ผ๋ฐ˜์ ์œผ๋กœ ์ฟ ํ‚ค๋Š” ๋งŒ๋ฃŒ์ผ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ๋งŒ๋ฃŒ์ผ์ด ์ง€๋‚˜๋ฉด ์ž๋™์œผ๋กœ ์‚ญ์ œ๋˜๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

 

์›น ์„œ๋ฒ„๊ฐ€ ์‘๋‹ต์„ ๋ณด๋‚ผ ๋•Œ HTTP ํ—ค๋”๋ฅผ ํ†ตํ•ด ์ฟ ํ‚ค๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „์†กํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ฐ™์€ ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ๋งˆ๋‹ค ๋ธŒ๋ผ์šฐ์ €๋Š” ์ฟ ํ‚ค๋ฅผ HTTP ํ—ค๋”์— ์ž๋™์œผ๋กœ ํฌํ•จ์‹œ์ผœ ์ „์†กํ•˜๊ณ  ์ด๋ฅผ ํ†ตํ•ด์„œ ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹๋ณ„ํ•˜๊ณ  ์ƒํƒœ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

 

์ฃผ๋กœ ์‚ฌ์šฉ์ž์˜ ์„ธ์…˜์„ ๊ด€๋ฆฌํ•˜๊ฑฐ๋‚˜, ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋‚˜ ๊ฐœ์ธ ์„ค์ •์„ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž๊ฐ€ ์›น ์‚ฌ์ดํŠธ์— ๋กœ๊ทธ์ธํ•˜๋ฉด ์‚ฌ์šฉ์ž์˜ ๋กœ๊ทธ์ธ ์ •๋ณด๋ฅผ ์ฟ ํ‚ค์— ์ €์žฅํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค์‹œ ๋ฐฉ๋ฌธํ•  ๋•Œ๋งˆ๋‹ค ๋กœ๊ทธ์ธ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์žฅ์ 

  • ์‚ฌ์šฉ์ž์˜ ๋ธŒ๋ผ์šฐ์ €์— ์ง์ ‘ ์ €์žฅ๋˜๋ฏ€๋กœ, ์„œ๋ฒ„์˜ ๋ถ€ํ•˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž๊ฐ€ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋‹ค์‹œ ๋ฐฉ๋ฌธํ•˜๋ฉด ๊ธฐ์กด์˜ ์ƒํƒœ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • HttpOnly ์˜ต์…˜์œผ๋กœ XSS(Cross Site Scripting) ๊ณต๊ฒฉ์— ๋Œ€ํ•œ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. HttpOnly ์˜ต์…˜์„ ์„ค์ •ํ•˜๊ฒŒ ๋˜๋ฉด ํด๋ผ์ด์–ธํŠธ์—์„œ ์ฟ ํ‚ค์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‹จ์ 

  • ์šฉ๋Ÿ‰์ด ์ž‘์Šต๋‹ˆ๋‹ค.(์ด 4KB)
  • ๋ชจ๋“  HTTP ์š”์ฒญ์— ์ฟ ํ‚ค ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์ „์†ก๋˜๋ฏ€๋กœ, ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์„ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค.
  • HttpOnly ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด XSS ๊ณต๊ฒฉ์— ์ทจ์•ฝํ•ฉ๋‹ˆ๋‹ค.
  • CSRF(Cross-Site Request Forgery) ์ทจ์•ฝ: ์›น ์‚ฌ์ดํŠธ๊ฐ€ ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด ์‚ฌ์šฉ์ž์˜ ์„ธ์…˜์„ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ์„ ๋•Œ, ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ ์ƒํƒœ์—์„œ ๊ณต๊ฒฉ์ž๊ฐ€ ๋งŒ๋“  ์•…์˜์ ์ธ ์›นํŽ˜์ด์ง€์— ๋ฐฉ๋ฌธํ•˜๋ฉด, ํ•ด๋‹น ์›นํŽ˜์ด์ง€๋Š” ์‚ฌ์šฉ์ž์˜ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด ์•…์˜์ ์ธ ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 
    • ์ด๋Ÿฌํ•œ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ SamSite ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. SamSite ์˜ต์…˜์€ ์ฟ ํ‚ค๊ฐ€ ๊ฐ™์€ ๋„๋ฉ”์ธ์—์„œ๋งŒ ์ „์†ก๋˜๋„๋ก ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค๋ฅธ ์‚ฌ์ดํŠธ์—์„œ ์•…์˜์ ์ธ ์š”์ฒญ์„ ๋ณด๋‚ด๋„ ํ•ด๋‹น ์š”์ฒญ์—๋Š” ์ฟ ํ‚ค๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์„ธ์…˜(Session)

์„ธ์…˜์€ ์„œ๋ฒ„ ์ธก์—์„œ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

 

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ฒ˜์Œ ์„œ๋ฒ„์— ์ ‘์†ํ•˜๋ฉด, ์„œ๋ฒ„๋Š” ๊ณ ์œ ํ•œ ์„ธ์…˜ ID๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ด๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ์„ธ์…˜ ID๋Š” ์ฃผ๋กœ ์ฟ ํ‚ค๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌ๋˜๋ฉฐ, ํด๋ผ์ด์–ธํŠธ๋Š” ์ดํ›„ ์š”์ฒญ๋งˆ๋‹ค ์„ธ์…˜ ID๋ฅผ ์„œ๋ฒ„์— ์ „๋‹ฌํ•˜์—ฌ ์ž์‹ ์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.

 

์„œ๋ฒ„๋Š” ์„ธ์…˜ ID๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ์˜ ์ •๋ณด๋ฅผ ์„œ๋ฒ„ ๋ฉ”๋ชจ๋ฆฌ ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋ฉฐ, ์„œ๋ฒ„์— ์ ‘์†ํ•ด์„œ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ข…๋ฃŒํ•  ๋•Œ๊นŒ์ง€ ์ธ์ฆ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.


์ฟ ํ‚ค์™€ ์„ธ์…˜์˜ ์ฐจ์ด๋Š” ๋™์ž‘ ์›๋ฆฌ๋Š” ๊ฒฐ๊ตญ ์„ธ์…˜๋„ ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณณ์ด ํด๋ผ์ด์–ธํŠธ(์ฟ ํ‚ค)์ธ๊ฐ€ ์„œ๋ฒ„์ธ๊ฐ€(์„ธ์…˜)์˜ ์ฐจ์ด ๋ฐ ์ €์žฅ ๊ธฐ๊ฐ„์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์žฅ์ 

  • ๋ณด์•ˆ์„ฑ: ์„ธ์…˜ ์ •๋ณด๋Š” ์„œ๋ฒ„์— ์ €์žฅ๋˜๋ฏ€๋กœ ํด๋ผ์ด์–ธํŠธ์—์„œ ์ •๋ณด๋ฅผ ๊ฐ€๋กœ์ฑŒ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ์ฟ ํ‚ค์™€ ๋‹ฌ๋ฆฌ ์„ธ์…˜์€ ์„œ๋ฒ„์— ์ €์žฅ๋˜๋ฏ€๋กœ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ ์ œํ•œ์ด ์—†์Šต๋‹ˆ๋‹ค.
  • ๊ฐ ์‚ฌ์šฉ์ž(๋˜๋Š” ๋ธŒ๋ผ์šฐ์ €)๋Š” ๊ณ ์œ ํ•œ ์„ธ์…˜ ID๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์„œ ๊ฐœ๋ณ„ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๋”ฐ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ์ 

  • ์„ธ์…˜ ์ •๋ณด๊ฐ€ ์„œ๋ฒ„์— ์ €์žฅ๋˜๋ฏ€๋กœ ๋งŽ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘์†ํ•  ๊ฒฝ์šฐ ์„œ๋ฒ„ ๋ถ€ํ•˜๊ฐ€ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์›น ์Šคํ† ๋ฆฌ์ง€(Web Storage)

HTML5๋ถ€ํ„ฐ ์ง€์›ํ•˜๋Š” ์›น ์Šคํ† ๋ฆฌ์ง€(Storage)๋กœ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€(Local Storage)์™€ ์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€(Session Storage)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฟ ํ‚ค๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํด๋ผ์ด์–ธํŠธ์— ์ €์žฅ๋งŒ ํ•  ๋ฟ ์„œ๋ฒ„์— ์ž๋™์œผ๋กœ ์ „์†ก๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ธŒ๋ผ์šฐ์ € ์„ธ์…˜ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•˜๊ฑฐ๋‚˜, ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ™˜๊ฒฝ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ์ปฌ์— ์ €์žฅํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€(Session Storage)

  • ๋ธŒ๋ผ์šฐ์ €์˜ ์„ธ์…˜์ด ์ข…๋ฃŒ๋  ๋•Œ(๋‹ซ์„ ๋•Œ)๊นŒ์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ์ƒˆ์ฐฝ, ์ƒˆ ํƒญ ๋‹จ์œ„๋กœ ์Šคํ† ๋ฆฌ์ง€๊ฐ€ ์ƒ์„ฑ์ด ๋˜๋Š”๋ฐ์š”. ์ดํ›„ ์‚ฌ์šฉ์ž๊ฐ€ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ซ์œผ๋ฉด ์„ธ์…˜์Šคํ† ๋ฆฌ์ง€์˜ ๋ชจ๋“  ์ •๋ณด๊ฐ€ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ž ๊น ์ •๋ณด๋ฅผ ์ €์žฅํ•  ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€(Local Storage)

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

์žฅ์ 

  • ์ฟ ํ‚ค์— ๋น„ํ•ด ๋” ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€์™€ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€ ๊ฐ๊ฐ ์ตœ๋Œ€ 5MB)
  • HTTP ์š”์ฒญ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ํฌํ•จํ•˜์ง€ ์•Š์•„ ์ฟ ํ‚ค์— ๋น„ํ•ด ์ถ”๊ฐ€์ ์ธ ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์„ ์ค„์ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, CSRF์— ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.

๋‹จ์ 

  • ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ๊ด€๋ฆฌ๋˜๋ฏ€๋กœ XSS(Cross Site Scripting) ๊ณต๊ฒฉ์— ์ทจ์•ฝํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ค์ง ๋ฌธ์ž์—ด๋งŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ์ฒด๋‚˜ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์ €์žฅํ•˜๋ ค๋ฉด ์ง๋ ฌํ™” ๋˜๋Š” ์—ญ์ง๋ ฌํ™” ๊ณผ์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ  ๋ฌธํ—Œ:

https://raonctf.com/essential/study/web/cookie_connection
https://interconnection.tistory.com/74
https://developer.mozilla.org/ko/docs/Web/HTTP/Cookies
https://developer.mozilla.org/ko/docs/Web/API/Web_Storage_API

๋ฐ˜์‘ํ˜•