HTTP ํ๋กํ ์ฝ์ด ๋ฌด์ํ์ธ ๊ฒ์ ๋ณด์ํ์ฌ ์ธ์ ๊ด๋ฆฌ, ๊ฐ์ธํ, ์ถ์ ์ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์์ ๋ฐ์ดํฐ์ด๋ค
๋๋ฉ์ธ๋น ์ต๋ ์ฟ ํค ์์ ์ฟ ํค๋น ์ต๋ ํฌ๊ธฐ๋ฅผ ์ ํํ๊ณ ์๋ค
Set-Cookie : <์ฟ ํค์ด๋ฆ>=<์ฟ ํค๊ฐ>
Set-Cookie : <์ฟ ํค์ด๋ฆ>=<์ฟ ํค๊ฐ>
...
- ์๊ตฌ์ฟ ํค : Expires, Max-Age ์์ฑ ์ค์ ์ ๋ฐ๋ผ ๋ง๋ฃ์ผ์ด ๊ฒฐ์ ๋๋ค
- ์ธ์ ์ฟ ํค : Expires, Max-Age ๋ ํ์ฌ ์ธ์ ์ด ์ข ๋ฃ๋๋ฉด ์ญ์ ๋๋ค
๋ณด์์ ์ธ ์ด์ ๋ก ๋ธ๋ผ์ฐ์ ๋ ์ฟ ํค๋ฅผ ์ด๋ป๊ฒ ์ ์ฅํ๊ณ , ์ธ์ ์ ์กํ ์ง์ ๋ํ ์ ์ฑ
์ ์๊ฒฉํ๊ฒ ๊ด๋ฆฌํ๋ค.
๊ต์ฐจ ์ฌ์ดํธ ์์ฒญ์ด ์์ ๋ ์ฟ ํค๊ฐ ์๋์ผ๋ก ์ ์ก๋์ง ์๋๋ก ์ ํ์ ๋๋ ๋ฐฉ์์ผ๋ก ๋ณด์์ ๊ฐํํ๋ค.
SameSite, Secure, Path, Domain ๋ฑ์ ์ฟ ํค ์์ฑ์ ๊ต์ฐจ ์ฌ์ดํธ ์์ฒญ์์ ์ฟ ํค๋ฅผ ์ ์กํ๋ ๋ฐฉ์์ ์ ์ดํ๋ ์ค์ํ ์ญํ ์ ํ๋ค

Domain์ ์ฟ ํค๊ฐ ์ ํจํ ๋๋ฉ์ธ(์ด๋ค ์๋ฒ๊ฐ ์ฟ ํค๋ฅผ ์์ ํ ์ ์๋์ง)์ ์ค์ ํ๋ ์์ฑ์ด๋ค.
์๋ฅผ ๋ค์ด example.com์ผ๋ก ์ค์ ํ๋ฉด example.com ๋ฐ ๋ชจ๋ ํ์ ๋๋ฉ์ธ์์ ์ฟ ํค๊ฐ ์ ํจํด์ง๋ค.
์ง์ ํ์ง ์์ผ๋ฉด Domain ์ฟ ํค๋ ํด๋น ์์ฑ์ ์ค์ ํ ์๋ฒ์์ ์ฌ์ฉํ ์ ์์ง๋ง ํ์ ๋๋ฉ์ธ์์๋ ์ฌ์ฉํ ์ ์๋ค.
์๋ชป๋ ๋๋ฉ์ธ ์์ >> https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#invalid_domains
Path๋ ์ฟ ํค๊ฐ ์ ํจํ URL ๊ฒฝ๋ก๋ฅผ ์ง์ ํ๋ ์์ฑ์ด๋ค.
Path=/ ๋ก ์ค์ ํ๋ฉด ๋ชจ๋ URL ๊ฒฝ๋ก์์ ์ฟ ํค๊ฐ ์ ํจํ๋ค.
์ด ์์ฑ์ ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฟ ํค๋ฅผ ์ ๊ทผํ์ง ๋ชปํ๋๋ก ์ ํํ๋ค.
์ด๋ฅผ ์ค์ ํ๋ฉด ํด๋ผ์ด์ธํธ ์ธก์์ JavaScript๊ฐ ์ฟ ํค๋ฅผ ์ฝ์ ์ ์๊ฒ ๋๋ฏ๋ก, XSS ๊ณต๊ฒฉ์ ๋ฐฉ์ดํ๋ ๋ฐ ์ ์ฉํ๋ค.
Secure ์์ฑ์ด ์ค์ ๋ ์ฟ ํค๋ HTTPS ์ฐ๊ฒฐ์ ํตํด์๋ง ์ ์ก๋๋ค.
์ด ์์ฑ์ ์ฟ ํค๊ฐ ์ํธํ๋ ์ฐ๊ฒฐ์์๋ง ์์ ํ๊ฒ ์ ์ก๋๋๋ก ๋ณด์ฅํ๋ค. (๋ก์ปฌํธ์คํธ ์ ์ธ)
์ค๊ฐ์ ๊ณต๊ฒฉ์ ๋ง์ ์ ์๋ค.
์ฟ ํค๊ฐ ๊ต์ฐจ ์ฌ์ดํธ ์์ฒญ(ํ์ฌ ์ฟ ํค)์ ํฌํจ๋์ง ์๋๋ก ์ ์ดํ๋ ๊ธฐ๋ฅ์ด๋ค.
SameSite ๊ฐ์ ๋ฐ๋ผ ์ฟ ํค๊ฐ ์ด๋ ์ํฉ์์ ์ ์ก๋๋์ง ๊ฒฐ์ ๋๋ค.
- Strict : ๊ต์ฐจ ์ฌ์ดํธ ์์ฒญ ์ ์ฟ ํค๊ฐ ์ ์ก๋์ง ์๋๋ค
- Lax : ๊ต์ฐจ ์ฌ์ดํธ GET ์์ฒญ ์์๋ง ์ฟ ํค ์ ์ก, POST ์์ฒญ์ ํฌํจ๋์ง ์๋๋ค
- None : ๊ต์ฐจ ์ฌ์ดํธ ์์ฒญ์์๋ ์ฟ ํค๋ฅผ ์ ์กํ๋๋ก ํ์ฉํ์ง๋ง, Secure ์์ฑ์ด ํ์ํ๋ค
cross-origin ์์ฒญ์ ๊ฒฝ์ฐ user agent๊ฐ ๋ค๋ฅธ ๋๋ฉ์ธ์ผ๋ก๋ถํฐ cookie ๋ค์ ์ ๋ฌํด์ผ๋ง ํ๋๊ฐ ์๋๊ฐ๋ฅผ ๋ํ๋ธ๋ค
์ฌ์ฉ๋ ์ ์๋ 3๊ฐ์ง ๊ฐ์ ์๋์ ๊ฐ๋ค
- omit : ์ ๋๋ก Cookie ๋ค์ ์ ์กํ๊ฑฐ๋ ๋ฐ์ง ์๋๋ค
- same-origin : URL์ด ํธ์ถ script์ ๋์ผ ์ถ์ฒ(same origin)์ ์๋ค๋ฉด, user credentials(cookies, basic http auth ๋ฑ)์ ์ ์กํ๋ค(default๊ฐ)
- include : cross-origin ํธ์ถ์ด๋ผ๋ ์ธ์ ๋ user credentials(cookies, basic http auth๋ฑ)์ ์ ์กํ๋ค
์๋ฅผ ๋ค์ด, CORS ์์ฒญ์์ Set-Cookie๋ก ๋ฐ์ ์ธ์ ์ ์ ์งํ์ฌ ์ฟ ํค๋ฅผ ๋ณด๋ด๋ ค๋ฉด ํ์ํ๋ค
โ ์๋ฒ์์ Access-Control-Allow-Credentials: true๊ฐ ์ค์ ๋์ง ์์ผ๋ฉด credentials: 'include'๊ฐ ์๋ํ์ง ์๋๋ค
[์ฐธ๊ณ ๋ฌธ์] Request.Credentials
https://developer.mozilla.org/ko/docs/Web/API/Request/credentials
Request.credentials - Web API | MDN
Request ์ธํฐํ์ด์ค์ credentials ์ฝ๊ธฐ ์ ์ฉ ์์ฑ์ cross-origin ์์ฒญ์ ๊ฒฝ์ฐ, user agent๊ฐ ๋ค๋ฅธ ๋๋ฉ์ธ์ผ๋ก๋ถํฐ cookie ๋ค์ ์ ๋ฌํด์ผ๋ง ํ๋๊ฐ ์๋๊ฐ๋ฅผ ๋ํ๋ธ๋ค. ์ด๊ฒ์ XHR ์ withCredentials flag ๊ณผ ๋น์ทํ
developer.mozilla.org
[์ฐธ๊ณ ๋ฌธ์] ์ฟ ํค
https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies
Using HTTP cookies - HTTP | MDN
A cookie (also known as a web cookie or browser cookie) is a small piece of data a server sends to a user's web browser. The browser may store cookies, create new cookies, modify existing ones, and send them back to the same server with later requests. Coo
developer.mozilla.org