๐Ÿช Cookie

๊น€๋ณด์„ฑยท2021๋…„ 4์›” 18์ผ
0

CS

๋ชฉ๋ก ๋ณด๊ธฐ
8/11

๐Ÿช ์ฟ ํ‚ค๊ฐ€ ๋ญ˜๊นŒ?

๐Ÿช ์ด๋ฆ„์˜ ๊ธฐ์›

"์ฟ ํ‚ค"๋ผ๋Š” ์šฉ์–ด๋Š” ๋ฃจ ๋ชฌํˆด๋ฆฌ๋ผ๋Š” ์‚ฌ๋žŒ์— ์˜ํ•ด์„œ ๋งŒ๋“ค์–ด ์กŒ๋‹ค๊ณ  ํ•œ๋‹ค. ์œ ๋‹‰์Šค ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์ด ์‚ฌ์šฉํ•œ, ํ”„๋กœ๊ทธ๋žจ์ด ์ˆ˜์‹  ํ›„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์€ ์ฑ„๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ํŒจํ‚ท์„ ์˜๋ฏธํ•˜๋Š” ๋งค์ง์ฟ ํ‚ค๋ผ๋Š” ์šฉ์–ด์—์„œ ๋น„๋กฏ๋˜์—ˆ๋‹ค.
์ถœ์ฒ˜: https://ko.wikipedia.org/wiki/HTTP_%EC%BF%A0%ED%82%A4

๐Ÿช ์ฟ ํ‚ค ์ •์˜

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

๐Ÿช ์ฟ ํ‚ค ์˜ต์…˜

Domain

Domain์€ ํ”ํžˆ ์šฐ๋ฆฌ๊ฐ€ ์•„๋Š” ๋„๋ฉ”์ธ์„ ์˜๋ฏธํ•œ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด 'google.com', 'naver.com' ๋“ฑ์ด ์žˆ๋‹ค.

Path

์„œ๋ฒ„ ๋ผ์šฐํŒ…ํ• ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ๋กœ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
์˜ˆ๋ฅผ๋“ค์–ด '/', 'users', 'user/login' ๋“ฑ์ด ์žˆ๋‹ค.

Maxage or Expires

์ฟ ํ‚ค๊ฐ€ ์œ ์š”ํ•œ ๊ธฐ๊ฐ„์„ ์˜๋ฏธํ•œ๋‹ค. ๊ทธ๋ž˜์„œ MaxAge๋Š” ์•ž์œผ๋กœ ์œ ์š”ํ•œ ์‹œ๊ฐ„์„ ์ง€์ •ํ•˜๊ณ , Expires๋Š” ์–ธ์ œ๊นŒ์ง€ ์œ ์š”ํ•œ์ง€ date๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

Secure

์ฟ ํ‚ค๋ฅผ ์ „์†กํ•ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์— ๋”ฐ๋ฅธ ์ฟ ํ‚ค์ „์†ก ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.
๋งŒ์•ฝ secure๊ฐ€ true์ผ๋•Œ httpsํ”„๋กœํ† ์ฝœ์„ ์ด์šฉํ•˜์—ฌ ์ „์†ก๊ฐ€๋Šฅํ•˜๋‹ค.

HttpOnly

javascript์—์„œ ๋ธŒ๋ผ์šฐ์ €์— ์ ‘๊ทผ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๊ฒŒ ๋œ๋‹ค.
๋งŒ์•ฝ httpOnly๊ฐ€ true๋กœ ์„ค์ •๋˜์—ˆ์„ ๊ฒฝ์šฐ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค. httpOnly๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ false๋กœ ์„ค์ •๋˜์—ˆ๋Š”๋ฐ, ์ด ๊ฒฝ์šฐ 'XSS'๊ณต๊ฒฉ์— ์ทจ์•ฝํ•˜๋‹ค.

SameSite

Cross-Origin ์š”์ฒญ์„ ๋ฐ›์€ ๊ฒฝ์šฐ ์š”์ฒญ์—์„œ ์‚ฌ์šฉํ•œ ๋ฉ”์†Œ๋“œ์™€ ํ•ด๋‹น ์˜ต์…˜์˜ ์กฐํ•ฉ์œผ๋กœ ์„œ๋ฒ„์˜ ์ „์†ก์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•˜๊ฒŒ ๋œ๋‹ค.

Lax : Cross-Orgin ์š”์ฒญ์ด๋ฉด 'GET'๋ฉ”์†Œ๋“œ์— ํ•œ์—์„œ ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค.
Strict : Cross-Orgin ์•„๋‹Œ same-site์ธ ๊ฒฝ์šฐ์—๋งŒ ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค.
None : ํ•ญ์ƒ ์ฟ ํ‚ค๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ๋‹ค๋งŒ ์˜ต์…˜ ์ค‘ Secure์˜ต์…˜์ด ํ•„์š”ํ•˜๋‹ค.

์œ„์™€ ๊ฐ™์€ ์˜ต์…˜๋“ค์„ ์ง€์ •ํ•œ๋‹ค์Œ ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ ์ฒ˜์Œ ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด headers์— Set-Cookie๋ผ๋Š” ํ”„๋กœํผํ‹ฐ์— ์ฟ ํ‚ค๋ฅผ ๋‹ด์•„ ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•˜๊ฒŒ ๋œ๋‹ค. ์ดํ›„ ํด๋ผ์ด์–ธํŠธ ํ˜น์€ ์„œ๋ฒ„์—์„œ ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•ด์•ผ ํ•œ๋‹ค๋ฉด ํด๋ผ์ด์–ธํŠธ๋Š” ํ•ด๋”์— Cookie๋ผ๋Š” ํ”„๋กœํผํ‹ฐ์— ์ •๋ณด๋ฅผ ๋‹ด์•„ ์„œ๋ฒ„์— ์ „์†กํ•˜๊ฒŒ ๋œ๋‹ค.

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