๐จ HTTP๋ ๋ฌด์ํ(Stateless) ํ๋กํ ์ฝ์ด๋ค. ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ์์ฒญ๊ณผ ์๋ต์ ์ฃผ๊ณ ๋ฐ์ผ๋ฉด ์ฐ๊ฒฐ์ด ๋์ด์ง๋ค.
๐ ํด๋ผ์ด์ธํธ๊ฐ ๋ค์ ์์ฒญํ๋ฉด ์๋ฒ๋ ์ด์ ์์ฒญ์ ๊ธฐ์ตํ์ง ๋ชปํ๋ค.
์ฟ ํค๋?
- ์๋ฒ๊ฐ ์น ๋ธ๋ผ์ฐ์ ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ๋ถ๋ฌ์ฌ ์ ์๋ ์๋จ์ด๋ค. ํด๋น ๋๋ฉ์ธ์ ๋ํ ์ฟ ํค๊ฐ ์กด์ฌํ๋ฉด ์น ๋ธ๋ผ์ฐ์ ๋ ๋๋ฉ์ธ์๊ฒ http ์์ฒญ ์ ์ฟ ํค๋ฅผ ํจ๊ป ์ ๋ฌํ๋ค.
- ์ฌ์ฉ์ ๋ก๊ทธ์ธ ์ธ์
๊ด๋ฆฌ, ๊ด๊ณ ์ ๋ณด ํธ๋ํน์ ์ฌ์ฉ๋๋ค.
- ์ฟ ํค ์ ๋ณด๋ ์์ฑ๋ ์ดํ ํญ์ ์๋ฒ์ ์ ์ก๋๊ธฐ ๋๋ฌธ์ ๋คํธ์ํฌ ํธ๋ํฝ์ ๋ ์ ๋ฐํ๋ค.
๐ ์ต์ํ์ ์ ๋ณด๋ง ์ฌ์ฉํด์ผ ํจ(์ธ์
id, ์ธ์ฆ ํ ํฐ)
๐ ์๋ฒ ์ ์ก๋ง๊ณ ์น ๋ธ๋ผ์ฐ์ ๋ด๋ถ์ ์ ์ฅํ๊ณ ์ถ๋ค๋ฉด ์น ์คํ ๋ฆฌ์ง ์ฐธ๊ณ
๐ ์ฃผ์ : ๋ณด์์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ ์ ์ฅํ๋ฉด ์๋จ(์ฃผ๋ฏผ๋ฒํธ, ์ ์ฉ์นด๋ ๋ฒํธ ๋ฑ)
์ฟ ํค ์ฌ์ฉ
- Set-Cookie : ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ์ฟ ํค ์ ๋ฌ
์) set-cookie: sessionId=abcde1234; expires=Sat, 26-Dec-2020 00:00:00 GMT; path=/; domain=.google.com; Secure
- Cookie : ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์์ ๋ฐ์ ์ฟ ํค๋ฅผ ์ ์ฅํ๊ณ , HTTP ์์ฒญ์ ์๋ฒ๋ก ์ ๋ฌ
๐ช ์ฟ ํค๋ฅผ ์ฌ์ฉํ๋ฉด?
ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์คฌ์ ๋ ์๋ฒ๋ ์ฟ ํค ์ ์ฅ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค. ๋ค์์ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ๋ ์ฟ ํค ์ ์ฅ์๋ฅผ ์กฐํํด์ ์กฐํ๋ ์ฟ ํค๋ฅผ ํฌํจํ์ฌ ์์ฒญํ๋ค.
์ฟ ํค ์ต์
์๋ช
์ฃผ๊ธฐ
- expires : ๋ง๋ฃ์ผ์ด ๋๋ฉด ์ฟ ํค ์ญ์
์) Set-Cookie: expires=Sat, 26-Dec-2020 04:39:21 GMT
- max-age : ์ฟ ํค๊ฐ ์ ํจํ ์๊ฐ์ ์ด๋จ์๋ก ์ค์ , 0์ด๋ ์์๋ฅผ ์ง์ ํ๋ฉด ์ฟ ํค ์ญ์
์) Set-Cookie: max-age=3600 (3600์ด)
- ์ธ์
์ฟ ํค:
MaxAge
๋ Expires
์ต์
์ด ์๋ ์ฟ ํค๋ก ๋ธ๋ผ์ฐ์ ๊ฐ ์คํ ์ค์ผ ๋๋ง ์ฌ์ฉํ ์ ์๋ ์์ ์ฟ ํค. ๋ธ๋ผ์ฐ์ ๋ฅผ ์ข
๋ฃํ๋ฉด ํด๋น ์ฟ ํค ์ญ์
- ์์ ์ฟ ํค: ๋ธ๋ผ์ฐ์ ์ข
๋ฃ ์ฌ๋ถ์ ์๊ด์์ด
MaxAge
๋ Expires
์ต์
์ ์ง์ ๋ ์๊ฐ๋งํผ ์ฟ ํค ์ฌ์ฉ ๊ฐ๋ฅ
๋๋ฉ์ธ(domain)
- ๋ช
์ : ๋ช
์ํ ๋ฌธ์ ๊ธฐ์ค ๋๋ฉ์ธ + ์๋ธ ๋๋ฉ์ธ(๋๋ฉ์ธ ์์ ์๋
www
๊ฐ์ ๊ฒ) ํฌํจ
- domain=example.org๋ฅผ ์ง์ ํด์ ์ฟ ํค ์์ฑ
๐ example.org, dev.example.org๋ ์ฟ ํค ์ ๊ทผ
- ์๋ต : ํ์ฌ ๋ฌธ์ ๊ธฐ์ค ๋๋ฉ์ธ๋ง ์ ์ฉ
- example.org ์์ ์ฟ ํค๋ฅผ ์์ฑํ๊ณ domain ์ง์ ์ ์๋ต
๐ example.org ์์๋ง ์ฟ ํค ์ ๊ทผ
๊ฒฝ๋ก(path)
- ์ ์ ๊ฒฝ๋ก๋ฅผ ํฌํจํ ํ์ ๊ฒฝ๋ก ํ์ด์ง(
/user/login
)๋ง ์ฟ ํค ์ ๊ทผ
- ์ผ๋ฐ์ ์ผ๋ก
path=/
๋ฃจํธ๋ก ์ง์
- ์ค์ ๋ ๊ฒฝ๋ก๋ฅผ ํฌํจํ๋ ํ์ ๊ฒฝ๋ก๋ก ์์ฒญ์ ํด๋ ์ฟ ํค๋ฅผ ์๋ฒ์ ์ ์กํ ์ ์๋ค.
path=/user
๋ผ๋ฉด /user/login
์ธ ๊ฒฝ์ฐ์๋ ์ฟ ํค ์ ์ก ๊ฐ๋ฅ
๋ณด์
- Secure
- Secure์ด
true
์ธ ๊ฒฝ์ฐ ํ๋กํ ์ฝ์ด https์ธ ๊ฒฝ์ฐ์๋ง ์ ์กํ๋ค.
- HttpOnly
true
์ธ ๊ฒฝ์ฐ ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ ๊ทผ ๋ถ๊ฐ(document.cookie)
- XSS ๊ณต๊ฒฉ ๋ฐฉ์ง
- HTTP ์ ์ก์๋ง ์ฌ์ฉ
- SameSite
- XSRF(or CSRF) ๊ณต๊ฒฉ ๋ฐฉ์ง
Lax
: Cross-Origin ์์ฒญ์ด๋ผ๋ฉด GET ๋ฉ์๋์ ๋ํด์๋ง ์ฟ ํค ์ ์ก
Strict
: Cross-Origin์ด ์๋ same-site
์ธ ๊ฒฝ์ฐ์๋ง ์ฟ ํค ์ ์ก
None
: ํญ์ ์ฟ ํค๋ฅผ ์ ์กํ ์ ์์ง๋ง Secure ์ต์
์ด ์ถ๊ฐ๋ก ํ์ํจ