Web

Cookie] ์ •์˜

์™•๊ฐ€๐Ÿ‘ 2023. 7. 15. 22:28
728x90
๋ฐ˜์‘ํ˜•

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

์ด๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•ด์„œ๋Š” Httpํ”„๋กœํ† ์ฝœ ์ƒ Http ํ—ค๋”๋ฅผ ํ†ตํ•ด ์†ก์ˆ˜์‹ ํ•˜๋„๋ก ์ •์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์ง„๊ณผ ๊ฐ™์ด dev-tool์—์„œ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

dev tool

 

์ฟ ํ‚ค๋Š” ๋‹จ์ˆœํžˆ name๊ณผ value๋กœ ์ด๋ฃจ์–ด์ง„ ๋‹จ์ˆœํ•œ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.

๋ธŒ๋ผ์šฐ์ €๋Š” ์„œ๋ฒ„์— request ๋ณด๋‚ด๊ณ , ์„œ๋ฒ„๋Š” response๋ฅผ ๋‚ ๋ ค์ค๋‹ˆ๋‹ค.

์ด response์—๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ request์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ๋“ค ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ €์žฅํ•˜๊ณ ์ž ํ•˜๋Š” ์ฟ ํ‚ค๊ฐ€ ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

 

์„œ๋ฒ„ Set-Cookie

์„œ๋ฒ„์—์„œ ์ฟ ํ‚ค๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๋‚ผ ๋•Œ ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค์ •ํ•ด ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Set-Cookie: Name=Value
Set-Cookie: Name=Value

 

์„œ๋ฒ„๋Š” Set-Cookie๋ผ๋Š” ์‘๋‹ต ํ—ค๋”์— ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ฐ›์•„์•ผ ํ•˜๋Š” ์ฟ ํ‚ค์ •๋ณด๋ฅผ ๋ช…์‹œํ•ด ์ค๋‹ˆ๋‹ค.

ํ•˜๋‚˜์˜ Set-Cookie์—๋Š” ํ•˜๋‚˜์˜ ์ฟ ํ‚ค๋งŒ ๋‹ด์„ ์ˆ˜ ์žˆ๊ณ , ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ฟ ํ‚ค๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

dev-tool Set-Cookie

์ด๋ ‡๊ฒŒ ๋ฐ›์€ ์ฟ ํ‚ค๋Š” ์ปดํ“จํ„ฐ์˜ ํ•˜๋“œ์— ์ €์žฅํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 

๋™์ผํ•œ ์„œ๋ฒ„์— ์š”์ฒญํ•  ๋•Œ, ์ €์žฅํ•ด ๋†“์€ ์ฟ ํ‚ค๋ฅผ Requestํ—ค๋”์— ์‹ค์–ด์„œ ๋ณด๋‚ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

 


 

 

ํด๋ผ์ด์–ธํŠธ Cookie

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

Cookie: Name=Value; Name=Value; ...

 

dev-tool Cookie

์ด๋Ÿฐ ํ˜•ํƒœ๋กœ ์ญ‰ ๋ถ™์—ฌ์„œ ๋ณด๋‚ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

 


 

 

์š”์•ฝ

์˜ˆ๋ฅผ ๋“ค์–ด, ์ œ ๋ธ”๋กœ๊ทธ์— ์ง„์ž…ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. 

https://wanga-story.tistory.com/  ํ‹ฐ์Šคํ† ๋ฆฌ ์„œ๋ฒ„์—์„œ

Set-Cookie: host=wanga 
Set-Cookie: title=Cookie

 

๋ผ๋Š” ์ฟ ํ‚ค๋ฅผ 2๊ฐœ ๋ณด๋ƒˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ์‹œ๋‹ค.

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

Cookie: host=wanga; title=Cookie;

 

๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ์„œ๋ฒ„๋Š” ์ด์ œ ์ฟ ํ‚ค๊ฐ’์„ ์ฝ์–ด์„œ ์›ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

๋ฐ์ดํ„ฐ๋ฅผ ๋ธŒ๋ผ์šฐ์ €์— ์ €์žฅํ•ด ๋†จ๋‹ค๊ฐ€ ์„œ๋ฒ„์—์„œ๋Š” ๋ธŒ๋ผ์šฐ์ €๋กœ๋ถ€ํ„ฐ ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ,

๋ฐ์ดํ„ฐ์™€ ํ•จ๊ป˜ ์š”์ฒญ์„ ๋ฐ›์•„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

Set-Cookie๋Š” ์„œ๋ฒ„๊ฐ€ ๋ธŒ๋ผ์šฐ์ €๋กœ ์ฟ ํ‚ค๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ์œผ๋กœ ์ผํšŒ์„ฑ์ด์ง€๋งŒ,

Cookieํ—ค๋”๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๋กœ ์ฟ ํ‚ค๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ์€ ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ๋ฐ˜๋ณต๋˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค.

 

 

728x90

 

 

์œ ํšจ๊ธฐ๊ฐ„

์„œ๋ฒ„์—์„œ ์ฒ˜์Œ ์ฟ ํ‚ค๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋ณด๋‚ผ ๋•Œ, ์œ ํšจ๊ธฐ๊ฐ„์„ ์„ค์ •ํ•ด์„œ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฏธ์„ค์ •์œผ๋กœ ๋””ํดํŠธ๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ ์„ธ์…˜์ด ์ข…๋ฃŒ๋  ๋•Œ ํ•จ๊ป˜ ์‚ฌ๋ผ์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ์„ธ์…˜ ์ฟ ํ‚ค๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

์œ ํšจ๊ธฐ๊ฐ„์„ ์„ค์ •ํ•œ ์ฟ ํ‚ค๋ฅผ ์˜์† ์ฟ ํ‚ค๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Š” ๋ธŒ๋ผ์šฐ์ € ์„ธ์…˜๋“ฑ๊ณผ ๋ฌด๊ด€ํ•˜๊ฒŒ ํŠน์ • ๊ธฐ๊ฐ„์ด๋‚˜ ํŠน์ • ์‹œ์ ๊นŒ์ง€ ์ฟ ํ‚ค๊ฐ€ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค.

  • expires: ๋งŒ๋ฃŒ์ผ์ด ๋˜๋ฉด ์ฟ ํ‚ค ์‚ญ์ œ
  • max-age: ์ดˆ๋‹จ์œ„๋กœ ์ •ํ•˜๋ฉฐ, 0์ด๋‚˜ ์Œ์ˆ˜๋กœ ์ง€์ •ํ•˜๊ฒŒ ๋˜๋ฉด ์ฟ ํ‚ค ์‚ญ์ œ
Set-Cookie: Key=Value; Expires=์ข…๋ฃŒ์‹œ์ 
Set-Cookie: Key=Value; Max-Age=์œ ํšจ ๊ธฐ๊ฐ„

 

expires
max-age

dev-tool ๋ณด๋ฉด Set-Cookie ๋์— ์ด๋ ‡๊ฒŒ ๊ฐ’์ด ์„ค์ •๋ผ ์žˆ๋Š” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 


 

 

์ ์šฉ๋ฒ”์œ„

์ฟ ํ‚ค๋Š” ๋„๋ฉ”์ธ์— ๋”ฐ๋ผ ์ œํ•œ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๋„๋ฉ”์ธ ์ง„์ž…์œผ๋กœ ์ƒ์„ฑ๋œ ์ฟ ํ‚ค๋Š” ๊ณ„์†ํ•ด์„œ ๋ณด๋‚ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด๋ฅผ ์ข€ ๋” ์„ธ๋ฐ€ํ•˜๊ฒŒ ํ•˜์—ฌ ์›ํ•˜๋Š” URL์— ๋ฐฉ๋ฌธํ•  ๋•Œ์—๋งŒ ์ฟ ํ‚ค๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

  • Domain์„ ๋ช…์‹œํ•˜๊ฒŒ ๋˜๋ฉด, ๋„๋ฉ”์ธ + ์„œ๋ธŒ๋„๋ฉ”์ธ๊นŒ์ง€ ์ฟ ํ‚ค์˜ ๋ฒ”์œ„๊ฐ€ ํ™•์žฅ
  • Path๋ฅผ ๋ช…์‹œํ•˜๋ฉด ํ•ด๋‹น ๋„๋ฉ”์ธ์˜ ํŠน์ • ๊ฒฝ๋กœ๋กœ ์ฟ ํ‚ค์˜ ๋ฒ”์œ„๋ฅผ ์ถ•์†Œ
Set-Cookid: Key=Value; Domain=๋„๋ฉ”์ธ
Set-Cookid: Key=Value; Path=๊ฒฝ๋กœ

 

Cookie

์‚ฌ์ง„์„ ๋ณด์‹œ๋ฉด, ๋งˆ์ง€๋ง‰์— ์ ํ˜€์žˆ์Šต๋‹ˆ๋‹ค.

path=/; ๋กœ ์„ค์ •๋ผ ์žˆ๋Š” ๊ฑฐ ๋ด์„œ๋Š” ํ•ด๋‹น ๋„๋ฉ”์ธ ์ „๋ถ€ ๋ณด๋‚ผ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

domain=google.com; ์œผ๋กœ ์„ค์ •๋ผ์žˆ๋Š”๊ฑฐ ๋ด์„œ๋Š” google.com์˜ ์„œ๋ธŒ ๋„๋ฉ”์ธ ์ „๋ถ€ ์ฟ ํ‚ค๋ฅผ ๊ณต์œ ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค.

 

 


 

 

Cookie ๋‹จ์ 

์ฟ ํ‚ค์˜ ๋‹จ์ ์— ๋Œ€ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ์œ ์‹ค๋˜๊ธฐ ์‰ฌ์›€
  • ๋ณ€์กฐ๊ฐ€ ์‰ฌ์›€
  • ๋ณด์•ˆ, ํ•ดํ‚น์— ์œ„ํ—˜
  • ํ•ญ์ƒ ์„œ๋ฒ„์— ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์„ ์œ ๋ฐœ

์ด๋ฅผ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•ด Local Storage, Sesstion Storage๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ,

๊ตณ์ด ์„œ๋ฒ„์—์„œ ์ฝ์„ ํ•„์š”๊ฐ€ ์—†๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋ธŒ๋ผ์šฐ์ €์— ์ €์žฅํ•˜์—ฌ์„œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

 


 

 

Cookie ๋ณด์•ˆ ๊ฐœ์„ 

๋‹จ์ ์„ ๊ฐ–๊ณ  ์žˆ์Œ์—๋„ ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ๋œ๋‹ค๋ฉด ์†์„ฑ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ทธ๋‚˜๋งˆ ๊ดœ์ฐฎ์•„์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Secure์™€ HttpOnly ์˜ต์…˜์ž…๋‹ˆ๋‹ค.

Set-Cookid: Key=Value; Secure
Set-Cookid: Key=Value; HttpOnly

 

Secure๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ https ํ”„๋กœํ† ์ฝœ ์ƒ์—์„œ๋งŒ ์„œ๋ฒ„๋กœ ์ฟ ํ‚ค๋ฅผ ๋ณด๋‚ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋„คํŠธ์›Œํฌ ์ƒ๊ฐ€ ํƒˆ์ทจ๋˜์—ˆ์„ ๋•Œ๋ฅผ ๋Œ€๋น„ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

HttpOnly ์ด ์†์„ฑ์ด ๋ช…์‹œ๋œ ์ฟ ํ‚ค๋Š” JS์—์„œ document.cookie๋กœ ์ฟ ํ‚ค์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

 

 


 

 

Cookie์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด ๋งŽ์•„ ์‚ฌ์šฉ๋˜๋Š” ์ด์œ ๋Š” ๋‹ค์Œ ๊ฒŒ์‹œ๊ธ€์—์„œ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

728x90

'Web' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

CSR vs SSR vs SSG (+SEO)  (0) 2023.08.06
Token] JWT (JSON Web Token)  (0) 2023.07.27
Token] Token๋ž€? ์ •์˜  (0) 2023.07.23
Session์ด๋ž€?  (0) 2023.07.20
Cookie] ์‚ฌ์šฉํ•˜๋Š” ์ด์œ   (0) 2023.07.16