HTTP ์ฟ ํ‚ค ๐Ÿช

yoo chang heonยท2022๋…„ 3์›” 23์ผ
0

Web

๋ชฉ๋ก ๋ณด๊ธฐ
1/6

HTTP ์ฟ ํ‚ค๋ž€?

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

  • ํด๋ผ์ด์–ธํŠธ์—์„œ ์ €์žฅ, ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋กœ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ซ์•„๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€
  • ์„œ๋ฒ„์—์„œ set-Cookie๋ฅผ ์‘๋‹ตํ—ค๋”๋กœ ๋‚ด๋ ค์ฃผ๋ฉด ํด๋ผ์ด์–ธํŠธ๋Š” ๋ฐ›์•„์„œ ์ €์žฅํ•œ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ์—์„œ ์ž์ฒด ์กฐ์ž‘ ๊ฐ€๋Šฅ
  • ๊ฐ ์ƒํƒœ์— ์ˆ˜๋ช…์„ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ชฉ์ 

  1. ์„ธ์…˜ ๊ด€๋ฆฌ : ์„œ๋ฒ„์— ์ €์žฅํ•ด์•ผ ํ•  ๋กœ๊ทธ์ธ, ์žฅ๋ฐ”๊ตฌ๋‹ˆ, ์Šค์ฝ”์–ด ๋“ฑ๋“ฑ...
  2. ๊ฐœ์ธํ™” : ์‚ฌ์šฉ์ž ์„ ํ˜ธ, ํ…Œ๋งˆ ๋“ฑ์˜ ์„ธํŒ…
  3. ํŠธ๋ž˜ํ‚น : ์‚ฌ์šฉ์ž ํ–‰๋™์„ ๊ธฐ๋กํ•˜๊ณ  ๋ถ„์„ํ•˜๋Š” ์šฉ๋„
    • ์„ธ์…˜์ด๋ž€ ํ†ต์‹ ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋กœ ์—ฐ๊ฒฐ๋œ ์ˆœ๊ฐ„๋ถ€ํ„ฐ ํ†ต์‹ ์„ ๋งˆ์น  ๋•Œ๊นŒ์ง€์˜ ๊ธฐ๊ฐ„
    • HTTP ์„ธ์…˜์ด๋ž€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์›น์„œ๋ฒ„์— ์—ฐ๊ฒฐ๋œ ์ˆœ๊ฐ„๋ถ€ํ„ฐ ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ซ์•„ ์„œ๋ฒ„์™€์˜ HTTP ํ†ต์‹ ์„ ๋๋‚ผ ๋•Œ๊นŒ์ง€์˜ ๊ธฐ๊ฐ„

๊ณผ๊ฑฐ์—๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก์— ์ •๋ณด๋ฅผ ์ €์žฅํ•  ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์ด์—ˆ์„ ๋•Œ ์ฟ ํ‚ค๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ์ง€๊ธˆ์€ mordern storage APIs๋ฅผ ์‚ฌ์šฉํ•ด ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค. ๋ชจ๋“  ์š”์ฒญ๋งˆ๋‹ค ์ฟ ํ‚ค๊ฐ€ ํ•จ๊ป˜ ์ „์†ก๋˜๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€๋Š” ์›์ธ์ด ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋ ค๋ฉด Mordern APIs์˜ ์ข…๋ฅ˜์ธ ์›น ์Šคํ† ๋ฆฌ์ง€ API ( localStorage์™€ sessionStorage ) ์™€ IndexedDB๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

HTTP ์ฟ ํ‚ค ์ž‘๋™๋ฐฉ์‹


์‚ฌ์ง„ ์ถœ์ฒ˜
HTTP ์š”์ฒญ์„ ์ˆ˜์‹ ํ•  ๋•Œ, ์„œ๋ฒ„๋Š” ์‘๋‹ต๊ณผ ํ•จ๊ป˜ set-Cookie ํ—ค๋”๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ณดํ†ต ๋ธŒ๋ผ์šฐ์ €์— ์˜ํ•ด ์ €์žฅ๋˜๊ณ , ์ดํ›„ ๊ฐ™์€ ์„œ๋ฒ„์— ์˜ํ•ด ๋งŒ๋“ค์–ด์ง„ ์š”์ฒญ๋“ค์˜ Cookie HTTP ํ—ค๋” ์•ˆ์— ํฌํ•จ๋˜์–ด ์ „์†ก๋œ๋‹ค.

๊ฐ„๋‹จํ•œ ์ฟ ํ‚ค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •๋  ์ˆ˜ ์žˆ๋‹ค. HTTP ์‘๋‹ตํ—ค๋”๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ๋กœ ์ „์†ก๋œ๋‹ค.

Set-Cookie: <cookie-name>=<cookie-value>

์„œ๋ฒ„ ํ—ค๋”๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ฟ ํ‚ค๋ฅผ ์ €์žฅํ•˜๋ผ๊ณ  ์ „๋‹ฌ โ†’\rightarrow ์„œ๋ฒ„๋กœ ์ „์†ก๋˜๋Š” ๋ชจ๋“  ์š”์ฒญ๊ณผ ํ•จ๊ป˜, ๋ธŒ๋ผ์šฐ์ €๋Š” Cookieํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„๋กœ ์ด์ „์— ์ €์žฅํ–ˆ๋˜ ๋ชจ๋“  ์ฟ ํ‚ค๋“ค์„ ํšŒ์‹ 

์ฟ ํ‚ค์˜ ๋ผ์ดํ”„ํƒ€์ž„

  • ์„ธ์…˜ ์ฟ ํ‚ค๋Š” ํ˜„์žฌ ์„ธ์…˜์ด ๋๋‚  ๋•Œ ์‚ญ์ œ(ํŽ˜์ด์ง€ ๋‹ซํž ๋•Œ). ๋ธŒ๋ผ์šฐ์ €๋Š” ํ˜„์ƒˆ ์„ธ์…˜์ด ๋๋‚˜๋Š” ์‹œ์ ์„ ์ •์˜ํ•˜๋ฉฐ, ์–ด๋–ค ๋ธŒ๋ผ์šฐ์ €๋“ค์€ ์žฌ์‹œ์ž‘ํ•  ๋–„ ์„ธ์…˜์„ ๋ณต์›ํ•ด ์„ธ์…˜ ์ฟ ํ‚ค๋ฅผ ๋ฌดํ•œ์œผ๋กœ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

  • ์˜์†์ ์ธ ์ฟ ํ‚ค๋Š” Expires ์†์„ฑ์— ๋ช…์‹œ๋œ ๋‚ ์งœ์— ์‚ญ์ œ๋˜๊ฑฐ๋‚˜ Max-Age ์†์„ฑ์— ๋ช…์‹œ๋œ ๊ธฐ๊ฐ„ ์ดํ›„์— ์‚ญ์ œ๋œ๋‹ค.

Secure ์ฟ ํ‚ค์™€ HTTPOnly

  • Secure ์ฟ ํ‚ค
    • HTTP ํ”„๋กœํ† ์ฝœ ์ƒ์—์„œ ์•”ํ˜ธํ™”๋œ ์š”์ฒญ์ผ ๊ฒฝ์šฐ์—๋งŒ ์ „์†ก (https ์ผ ๋•Œ๋งŒ)
    • ๋ฏผ๊ฐํ•œ ์ •๋ณด๋Š” ์ ˆ๋Œ€ ์ฟ ํ‚ค์— ์ €์žฅ x
  • HTTPSOnly ์ฟ ํ‚ค
    • JavaScript์˜ Document.cookie API๋กœ๋Š” ์ ‘๊ทผ x
    • ์„œ๋ฒ„์—๊ฒŒ ์ „์†ก๋˜๊ธฐ๋งŒ ํ•œ๋‹ค.

์ฟ ํ‚ค์˜ ์Šค์ฝ”ํ”„

์ฟ ํ‚ค์˜ ์Šค์ฝ”ํ”„๋Š” Domain๊ณผ Path๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • Domain
    • ์ฟ ํ‚ค๊ฐ€ ์ „์†ก๋  ํ˜ธ์ŠคํŠธ๋“ค์„ ๋ช…์‹œํ•œ๋‹ค.
    • ๋งŒ์•ฝ ํ˜ธ์ŠคํŠธ๊ฐ€ ๋ช…์‹œ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์„œ๋ธŒ ๋„๋ฉ”์ธ์€ ํฌํ•จ๋˜์ง€ ์•Š๋Š” ํ˜„์žฌ ๋ฌธ์„œ ์œ„์น˜์˜ ํ˜ธ์ŠคํŠธ ์ผ๋ถ€๋ฅผ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ํ•œ๋‹ค.
    • ๋„๋ฉ”์ธ์ด ๋ช…์‹œ๋˜๋ฉด, ์„œ๋ธŒ ๋„๋ฉ”์ธ๋“ค์€ ํ•ญ์ƒ ํฌํ•จ๋œ๋‹ค.
  • Path
    • cookie ํ—ค๋”๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ์š”์ฒญ๋˜๋Š” URL ๋‚ด์— ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•ด์•ผ ํ•˜๋Š” URL ๊ฒฝ๋กœ์ด๋‹ค.

https://developer.mozilla.org/ko/docs/Web/HTTP/Cookies

0๊ฐœ์˜ ๋Œ“๊ธ€