ํ๋์ ์น ์ฌ์ดํธ๋ค์ ๊ฐ์ธํ๋ ์๋น์ค๋ฅผ ์ ๊ณตํ๊ณ ์ถ์ด ํ๋ค.
๊ฐ์ธํ๋ฅผ ํ๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์๋ค.
- ๊ฐ๋ณ ์ธ์ฌ / ์ฌ์ฉ์ ๋ง์ถค ์ถ์ฒ / ์ ์ฅ๋ ์ฌ์ฉ์ ์ ๋ณด
- ์ธ์ ์ถ์ : ์น์ฌ์ดํธ๋ ๊ฐ ์ฌ์ฉ์์๊ฒ์ ์ค๋ HTTP ํธ๋์ญ์ ์ ์๋ณํ ๋ฐฉ๋ฒ์ด ํ์ํ๋ค.
- ์ฌ์ฉ์ ์๋ณ ๊ด๋ จ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ HTTP ํค๋
- IP ์ฃผ์๋ก ์ฌ์ฉ์๋ฅผ ์๋ณ
- ์ฌ์ฉ์ ๋ก๊ทธ์ธ ์ธ์ฆ์ ํตํ ์ฌ์ฉ์ ์๋ณ
- URL์ ์๋ณ์๋ฅผ ํฌํจํ๋ ๋ฑ๋ฑํ URL
- ์๋ณ ์ ๋ณด๋ฅผ ์ง์ํด์ ์ ์งํ๋ ์ฟ ํค
์ฟ ํค ๐ช
- ์ฟ ๊ธฐ๋ ์ฌ์ฉ์๋ฅผ ์๋ณํ๊ณ ์ธ์ ์ ์ ์งํ๋ ๋ฐฉ์ ์ค ํ์ฌ๊น์ง ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค.
- ์ฟ ํค๋ ๋ท์ค์ผ์ดํ๊ฐ ์ต์ด๋ก ๊ฐ๋ฐํ์ง๋ง, ์ง๊ธ์ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ์ง์ํ๋ค.
- ์ฟ ํค๋ ์บ์์ ์ถฉ๋ํ ์ ์์ด์, ๋๋ถ๋ถ์ ์บ์๋ ๋ธ๋ผ์ฐ์ ๋ ์ฟ ํค์ ์๋ ๋ด์ฉ๋ฌผ์ ์บ์ฑ ํ์ง ์๋๋ค.
1. ๐โโ๏ธ ์ฟ ํค์ ํ์ type
- ์ธ์ ์ฟ ํค์ ์ง์ ์ฟ ํค์ ์ฐจ์ด์ ์ ํ๊ธฐ๋๋ ์์ ๋ฟ์ด๋ค.
- ์ฟ ํค๋
Discard
ํ๋ผ๋ฏธํฐ๊ฐ ์ค์ ๋์ด ์๊ฑฐ๋,Expires
,Max-Age
๊ฐ์ ํ๊ธฐ๋๊ธฐ๊น์ง์ ๋จ์ ์๊ฐ์ ํํํ๋ ํ๋ผ๋ฏธํฐ๊ฐ ์์ผ๋ฉด ์ธ์ ์ฟ ํค๊ฐ ๋๋ค.
์ธ์ ์ฟ ํค session cookie
- ์ฌ์ฉ์๊ฐ ์ฌ์ดํธ๋ฅผ ํ์ํ ๋,
๊ด๋ จํ ์ค์ ๊ณผ ์ ํธ ์ฌํญ๋ค์ ์ ์ฅํ๋ ์์ ์ฟ ํค๋ค. - ์ธ์ ์ฟ ํค๋ ์ฌ์ฉ์๊ฐ ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ซ์ผ๋ฉด ์ญ์ ๋๋ค.
์ง์ ์ฟ ํค persistent cookie
- ์ญ์ ๋์ง ์๊ณ ๋ ๊ธธ๊ฒ ์ ์ง๋ ์ ์๋ค.
- ์ง์ ์ฟ ํค๋ ๋์คํฌ์ ์ ์ฅ๋์ด, ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ซ๊ฑฐ๋ ์ปดํจํฐ๋ฅผ ์ฌ์์ํ๋๋ผ๋ ๋จ์์๋ค.
- ์ง์ ์ฟ ํค๋ ์ฌ์ฉ์๊ฐ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ฐฉ๋ฌธํ๋ ์ฌ์ดํธ์ ๋ํ
์ค์ ์ ๋ณด๋ ๋ก๊ทธ์ธ ์ด๋ฆ์ ์ ์งํ๋ ค๊ณ ์ฌ์ฉํ๋ค.
Secure cookie
- ์ํธํ๋ ์ฐ๊ฒฐ HTTPS๋ก๋ง ์ ์กํ ์ ์๋ค.
- Secure ํ๋๊ทธ๋ฅผ ์ถ๊ฐํด์ ์์ฑํ๋ฉฐ,
HTTPS๋ก ์ ์กํ๊ธฐ ๋๋ฌธ์ ์ฟ ํค๋ฅผ ์ด์ด๋ณด๋ ๊ฑธ ๋ฐฉ์งํ ์ ์๋ค.
Http-only cookie
- ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ API๋ฅผ ํตํด ์ ์ํ ์ ์๋ ์ฟ ํค์ด๋ฉฐ, XSS ์ํ์ ์์ ์ค๋ค.
- cross-site tracing(XST)์
cross-site request forgery(XSRF) ๊ณต๊ฒฉ์ ๊ณต๊ฒฉ๋ฐ๊ธฐ ์ฝ๋ค. - HTTPOnly ํ๋๊ทธ๋ฅผ ์ฟ ํค์ ์ถ๊ฐํ์ฌ ์์ฑํ๋ค.
Same-site cookie
- ๊ตฌ๊ธ ํฌ๋กฌ ๋ฒ์ 51์์ ์๋ก ์๊ฐ๋ ์ฟ ํค์ด๋ค.
- ์ฟ ํค๋ฅผ ์์ฑํ ๋๋ฉ์ธ๊ณผ ๊ฐ์ ์ถ์ฒ์ผ ๋๋ง ์ฟ ํค๋ฅผ ์ ์กํ๋ค.
third-party cookie
- ํ์ฌ ๋ฐฉ๋ฌธํ๊ณ ์๋ ์ฌ์ดํธ๊ฐ ์๋ ๋ค๋ฅธ ์ฌ์ดํธ์ ์ฟ ํค
- ๊ด๊ณ ์ ๊ฐ์ ์ธ๋ถ ์น์ฌ์ดํธ์ ์ปจํ
์ธ ๊ฐ ์์ ๋ ์์ฑ๋๋ฉฐ
์ด ์ฟ ํค๋ฅผ ์ด์ฉํ์ฌ ์ฌ์ฉ์๋ฅผ ์ถ์ ํ๊ณ , ๊ด๊ณ ๋ฅผ ์ ๊ณตํ๋ ๋ฐ ์ฌ์ฉํ๋ค.
์ข๋น cookie
- ์ฟ ํค์ ๋ํ ์ข ๋ ๊ธ์ง์ ์ธ ํด๊ฒฐ์ฑ
์
์ญ์ ์ดํ์ ๋ค์ ์์ฑ๋๋ ์ข๋น ์ฟ ํค ํน์ โEvercookiesโ - ์๋์ ์ผ๋ก ์์ํ ์ ๊ฑฐํ๋ ๊ฒ์ด ์ด๋ ค์ด ์ฟ ํค์ด๋ค.
- ๊ทธ๋ค์ ์ฟ ํค๊ฐ ์กด์ฌ ์ฌ๋ถ์ ๊ด๊ณ์์ด ๊ทธ๋ค ์์ ์ ๋ค์ ๋ง๋ค์ด๋ด๊ธฐ ์ํด ์น ์คํ ๋ฆฌ์ง API, Flash ๋ก์ปฌ ๊ณต์ ๊ฐ์ฒด ๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ๊ธฐ์ ๋ค์ ์ฌ์ฉํ๊ณ ์๋ค.
2. ๐ง ์ฟ ํค๋ ์ด๋ป๊ฒ ๋์ํ๋๊ฐ HOW
- ์ฟ ํค๋ ์๋ฒ๊ฐ ์ฌ์ฉ์์๊ฒ ๋ถ์ด๋ ์คํฐ์ปค์ ๊ฐ๋ค.
- ์ฌ์ฉ์๊ฐ ์น ์ฌ์ดํธ์ ๋ฐ๋ฌธํ๋ฉด, ์น ์ฌ์ดํธ๋ ์๋ฒ๊ฐ ์ฌ์ฉ์์๊ฒ ๋ถ์ธ ๋ชจ๋ ์คํฐ์ปค๋ฅผ ์ฝ์ ์ ์๋ค.
- ์ฒ์์ ์ฌ์ฉ์๊ฐ ์น์ฌ์ดํธ์ ๋ฐฉ๋ฌธํ๋ฉด, ์น ์๋ฒ๋ ์ฌ์ฉ์์ ๋ํด์ ์๋ฌด๊ฒ๋ ๋ชจ๋ฅธ๋ค.
- ์น ์๋ฒ๋ ์ฌ์ฉ์๊ฐ ๋ค์ ๋์์์ ๋, ํด๋น ์ฌ์ฉ์๋ฅผ ์๋ณํ๊ธฐ ์ํ ์ ์ผํ ๊ฐ์ ์ฟ ํค์ ํ ๋นํ๋ค.
- ์ฟ ํค๋ ์์์
์ด๋ฆ=๊ฐ
ํํ์ ๋ฆฌ์คํธ๋ฅผ ๊ฐ์ง๊ณ ,
๊ทธ ๋ฆฌ์คํธ๋Set-Cookie
ํน์Set-Cookie2
๊ฐ์ HTTP์๋ต ํค๋์ ๊ธฐ์ ๋์ด ์ฌ์ฉ์์๊ฒ ์ ๋ฌํ๋ค. ์ฐธ๊ณSet-Cookie2
์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋๋ค.
- ์ฟ ํค๋ ์ด๋ค ์ ๋ณด๋ ํฌํจํ ์ ์์ง๋ง,
์๋ฒ๊ฐ ์ฌ์ฉ์ ์ถ์ ์ฉ๋๋ก ์์ฑํ
์ ์ผํ ๋จ์ ์๋ณ ๋ฒํธ๋ง ํฌํจํ๊ธฐ๋ ํ๋ค.
- ์๋ฒ๋ ์ด ์ฟ ํค ๊ฐ์ผ๋ก DB์์ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ์ฐพ๋๋ฐ ์ฌ์ฉํ ์ ์๋ค.
- ๋ธ๋ผ์ฐ์ ๋ ์๋ฒ๋ก ์จ Set-Cookie ํค๋์ ์๋ ์ฟ ํค ์ฝํ ์ธ ๋ฅผ ๋ธ๋ผ์ฐ์ ์ฟ ํค DB์ ์ ์ฅํ๋ค.
- ์ฌ์ฉ์๊ฐ ๋ฏธ๋์ ๊ฐ์ ์ฌ์ดํธ๋ฅผ ๋ฐฉ๋ฌธํ๋ฉด,
๋ธ๋ผ์ฐ์ ๋ ์๋ฒ๊ฐ ์ด ์ฌ์ฉ์์๊ฒ ํ ๋นํ๋ ์ฟ ํค๋ฅผ Cookie์์ฒญ ํค๋์ ๊ธฐ์ ํด ์ ์กํ๋ค.
๊ทธ๋๊น ์ฟ ํค๋ ์ด๋ป๊ฒ ๋์? ์ ๋ฆฌ
- ์ ์ ๊ฐ ์๋ฒ์ ํ์ด์ง๋ฅผ ์์ฒญํ๋ค.
- ์๋ฒ์์ ์๋ต๊ณผ ํจ๊ป Set-Cookie ํค๋๋ฅผ ์ ์กํ๋ค.
- ๋ธ๋ผ์ฐ์ (User Agent)๊ฐ Set-Cookie ํค๋์์ ์ ๋ฌ๋ ๊ฐ์ ๊ฐ๊ณ
์ฟ ํค๋ฅผ ์์ฑํด์ (๋ธ๋ผ์ฐ์ ์) ์ ์ฅํ๋ค. - ์ด๋ ๊ฒ ์์ฑ๋ ์ฟ ํค๋ ํด๋ผ๊ฐ ์๋ฒ์ ์์ฒญํ ๋๋ง๋ค
๋ธ๋ผ์ฐ์ ๊ฐ ๊ฐ์ด ์ ์กํด์ค๋ค.
3. โณ์ฟ ํค ์ํ ๊ด๋ฆฌ
3.1 ํด๋ผ์ด์ธํธ ์ธก ์ํ
- ์ฟ ํค์ ๊ธฐ๋ณธ์ ์ธ ๋ฐ์์
๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ ๊ด๋ จ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ,
์ฌ์ฉ์๊ฐ ํด๋น ์๋ฒ์ ์ ๊ทผํ ๋๋ง๋ค ๊ทธ ์ ๋ณด๋ฅผ ํจ๊ป ์ ์กํ๊ฒ ํ๋ ๊ฒ์ด๋ค. - ๋ธ๋ผ์ฐ์ ๋ ์ฟ ํค ์ ๋ณด๋ฅผ ์ ์ฅํ ์ฑ
์์ด ์๋ค.
= ํด๋ผ์ด์ธํธ ์ธก ์ํ
= HTTP ์ํ ๊ด๋ฆฌ์ฒด๊ณ (HTTP State Management Mechnism) - ๊ฐ ๋ธ๋ผ์ฐ์ ๋ ๊ฐ๊ธฐ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์ฟ ํค๋ฅผ ์ ์ฅํ๋ค.
3.2 Domain ๋ณ ์ฟ ํค ์ํ ๊ด๋ฆฌ
- ๋ธ๋ผ์ฐ์ ๋ ์๋ฐฑ์์ฒ ๊ฐ์ ์ฟ ํค๋ฅผ ๊ฐ์ง๊ณ ์์ ์ ์์ง๋ง,
๋ธ๋ผ์ฐ์ ๊ฐ ์ฟ ํค ์ ๋ถ๋ฅผ ๋ชจ๋ ์ฌ์ดํธ์ ๋ณด๋ด์ง๋ ์๋๋ค. - ๋ธ๋ผ์ฐ์ ๋ ๋ณดํต ๊ฐ ์ฌ์ดํธ์ 2๊ฐ ํน์ 3๊ฐ์ ์ฟ ํค๋ง ๋ณด๋ธ๋ค.
- ๐ฅ ์ฟ ํค๋ฅผ ๋ชจ๋ ์ ๋ฌํ๋ฉด ์ฑ๋ฅ์ด ํฌ๊ฒ ์ ํ๋๋ค.
- ์ฟ ํค๋ฅผ ๋ชจ๋ ์ ๋ฌํ๋ฉด, ๋ธ๋ผ์ฐ์ ๋ ์ค์ ์ฝํ ์ธ ์ ๋ฐ์ดํธ๋ณด๋ค ๋ ๋ง์ ์ฟ ํค ๋ฐ์ดํธ๋ฅผ ์ ๋ฌํ๊ฒ ๋ ๊ฒ์ด๋ค.
- ๐คทโโ๏ธ ํด๋น ๋๋ฉ์ธ๊ณผ ์๊ด์๋ ์ฟ ํค๋ฅผ ๋ณด๋ด๋ฉด ๋ฌด์๋ฏธํ๋ค.
- ์ด ์ฟ ํค๋ค์ ๋๋ถ๋ถ์ ์๋ฒ์ ํนํ๋ ์ด๋ฆ/๊ฐ ์์ ํฌํจํ๊ณ ์๊ธฐ ๋๋ฌธ์,
๋๋ถ๋ถ ์ฌ์ดํธ์์๋ ์ธ์ํ์ง ์๋ ๋ฌด์๋ฏธํ ๊ฐ์ด๋ค. - ๋ชจ๋ ์ฌ์ดํธ์ ์ฟ ํค ์ ์ฒด๋ฅผ ์ ๋ฌํ๋ ๊ฒ์,
ํน์ ์ฌ์ดํธ์์ ์ ๊ณตํ ์ ๋ณด๋ฅผ ์ ๋ขฐํ์ง ์๋ ์ฌ์ดํธ์์ ๊ฐ์ ธ๊ฐ ์ ์์ด์,
์ ์ฌ์ ์ธ ๊ฐ์ธ ์ ๋ณด ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ๊ฒ์ด๋ค.
- ๋ณดํต ๋ธ๋ผ์ฐ์ ๋ ์ฟ ํค๋ฅผ ์์ฑํ ์๋ฒ์๊ฒ๋ง ์ฟ ํค์ ๋ด๊ธด ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ค.
- ์ฟ ํค๋ ์ผ์ข
์ ์ํ ์ ๋ณด๋ผ๊ณ ํ ์ ์์ผ๋ฉฐ
- ์๋ฒ๊ฐ ์์ฑํ์ฌ ํด๋ผ์ ์ ๋ฌํ๊ณ
- ํด๋ผ๋ ๊ทธ ์ฟ ํค๋ฅผ ์ ํจํ ์ฌ์ดํธ์๋ง ๋ค์ ์ ๋ฌํ๊ณ ๊ด๋ฆฌํ๋ค.
๋ง์ ์น ์ฌ์ดํธ๋ ๊ด๊ณ ๋ฅผ ๊ด๋ฆฌํ๋ ํ๋ ฅ์ ์ฒด์ ๊ณ์ฝ์ ํ๋ค. (third-party ์ฟ ํค)
- ์ด ๊ด๊ณ ๋ค์ ์น์ฌ์ดํธ ์์ฒด์ ์ผ๋ถ์ธ ๊ฒ์ฒ๋ผ ์ ์๋๊ณ , ์ง์ ์ฟ ํค๋ฅผ ๋ง๋ค์ด๋ธ๋ค.
- ๊ฐ์ ๊ด๊ณ ์ฌ์์ ์ ๊ณตํ๋ ์๋ก ๋ค๋ฅธ ์น์ฌ์ดํธ์ ์ฌ์ฉ์๊ฐ ๋ฐฉ๋ฌธํ๋ฉด,
๋ธ๋ผ์ฐ์ ๋ ์์ ๋ง๋ ์ง์ ์ฟ ํค๋ฅผ ๋ค์ ๊ด๊ณ ์ฌ ์๋ฒ๋ก ์ ์กํ๋ค. - ๊ด๊ณ ์ฌ๋ ์ด ๊ธฐ์ ์
Referer
ํค๋๋ฅผ ์ ๋ชฉํ์ฌ,
์ฌ์ฉ์์ ํ๋กํ๊ณผ ์น์ฌ์ดํธ๋ฅผ ์ฌ์ฉํ๋ ์ต๊ด์ ๋ํ ๋ฐฉ๋ํ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์ถํ ์ ์๋ค.
์ฟ ํค Domain ์์ฑ
- ์๋ฒ๋ ์ฟ ํค๋ฅผ ์์ฑํ ๋ Set-Cookie ์๋ต ํค๋์
Domain ์์ฑ์ ์์ ํด์, ์ด๋ค ์ฌ์ดํธ๊ฐ ๊ทธ ์ฟ ํค๋ฅผ ์ฝ์ ์ ์๋์ง ์ ์ดํ ์ ์๋ค.- ๋๋ฉ์ธ์ ํด๋นํ๋ ์ฌ์ดํธ๋ฅผ ๋ฐฉ๋ฌธํ๋ฉด Cookie ํค๋๊ฐ ํญ์ ์ ์ฉ๋ ๊ฒ์ด๋ค.
์๋ ๋ธ๋ผ์ฐ์ ์ ์ ์ฅ๋์ด ์๋ ์ฟ ํค ๋ด์ฉ์ ํด๋น ๋๋ฉ์ธ๊ณผ ๊ฐ์ ๊ฒฝ์ฐ
์์ฒญ ํค๋์ Cookie์ ํฌํจ์ํจ๋ค.
์ฟ ํค Path ์์ฑ
- ์น ์ฌ์ดํธ ์ผ๋ถ์๋ง ์ฟ ํค๋ฅผ ์ ์ฉํ ์ ์๋ค.
- HTTPs://www.google.com/ +
/search
/search
์ฌ๊ธฐ์๋ง ํด๋นํ๋ ์ฟ ํค!
- HTTPs://www.google.com/ +
4. ๐งฉ ์ฟ ํค ๊ตฌ์ฑ์์
- ํ์ฌ ์ฌ์ฉ๋๋ ์ฟ ํค ๋ช
์ธ์๋
Version0 ์ฟ ํค (= ๋ท์ค์ผ์ดํ ์ฟ ํค)
Version1 ์ฟ ํค (RFC 2965 => RFC 2965 => RFC 6265) - Version1 ์ฟ ํค๋ Version0 ์ฟ ํค์ ํ์ฅ์ผ๋ก
๋๋ฆฌ ์ฐ์ด์ง๋ ์๋๋ค. - Version0๊ณผ Version1 ์ฟ ํค ๋ช ์ธ ๋ชจ๋ HTTP/1.1 ๋ช ์ธ ์ผ๋ถ๋ก ๊ธฐ์ ๋์ด ์์ง๋ ์๋๋ค.
Version 0
1. Set-Cookie ํค๋
- Set-Cookie ํค๋๋ ์ฟ ํค์ ์ด๋ฆ๊ณผ ๊ฐ์ ๊ฐ์ ธ์ผ ํ๋ค.
- ์ด๋ ์ฟ ํค ์ต์
์์ฑ๋ค์
;
์ผ๋ก ์ด์ด ๊ธฐ์ ํ๋ค.
์ด๋ฆ=๊ฐ
: ํ์ ๊ฐExpires
: ์ ํ์ ์ธ ์์ฑ. ์ฟ ํค์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ ์ง ๋ฌธ์์ด
- ์์ผ, DD-MM-YY HH:MM:SS GMT
- ์ฌ์ฉํ ์ ์๋ ํ์์กด์ GMT
- ์ฟ ํค์ Expires๋ฅผ ๋ช ์ํ์ง ์์ผ๋ฉด ๊ทธ ์ฟ ํค๋ ์ฌ์ฉ์์ ์ธ์ ์ด ๋๋ ๋ ํ๊ธฐ๋ ๊ฒ์ด๋ค.
Domain
: ์ ํ์ ์ธ ์์ฑ. ๋ธ๋ผ์ฐ์ ๋ ์ด ์์ฑ์ ๊ธฐ์ ๋ ๋๋ฉ์ธ์ ์ฌ์ฉํ๋ ์๋ฒ ํธ์คํธ๋ช ์ผ๋ก๋ง ์ฟ ํค๋ฅผ ์ ์กํ๋ค.
- ์ด๋ ์๋ฒ๊ฐ ํด๋น ๋๋ฉ์ธ์๋ง ์ฟ ํค๋ฅผ ์ ํ์ ์ผ๋ก ์ ๋ฌํ๊ฒ ํ๋ค.
- ๋๋ฉ์ธ์ด ๋ช ์๋์ด ์์ง ์์ผ๋ฉด, Set-Cookie ์๋ต์ ์์ฑํ ์๋ฒ์ ํธ์คํธ ๋ช ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ฌ์ฉํ๋ค.
Path
: ์ ํ์ ์ธ ์์ฑ. ์๋ฒ์ ์๋ ํน์ ๋ฌธ์์๋ง ์ฟ ํค๋ฅผ ํ ๋นํ ์ ์๋ค.
/foo
๊ฒฝ๋ก๋/foobar
์/foo/bar.html
์ ๋ค์ด๋ง๋๋ค./
๋ ๋ชจ๋ ๊ฒ์ ๋ค์ด๋ง๋๋ค.- ๊ฒฝ๋ก๋ฅผ ๋ช ์ํ์ง ์์ผ๋ฉด, Set-Cookie ์๋ต์ ์ ๋ฌํ๋ URL์ ๊ฒฝ๋ก๊ฐ ์ฌ์ฉ๋๋ค.
Secure
: ์ ํ์ ์ธ ์์ฑ. ์ฟ ํค๋ HTTP๊ฐ SSL ๋ณด์ ์ฐ๊ฒฐ์ ์ฌ์ฉํ ๋๋ง ์ฟ ํค๋ฅผ ์ ์กํ๋ค.HttpOnly
: HttpOnly๋ ์ฟ ํค์ ๋ฒ์๋ฅผ HTTP ์์ฒญ์ผ๋ก ์ ํํ๋ค.
HttpOnly๊ฐ ์ค์ ๋ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ API๋ก๋ ์ฟ ํค์ ์ ๊ทผํ์ง ๋ชปํ๋ค.
2. Cookie ํค๋
- ํด๋ผ๊ฐ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ผ ๋๋, Domain, Path, Secure ํํฐ๋ค์ด ํ์ฌ ์์ฒญํ๋ ค๊ณ ํ๋ ์ฌ์ดํธ์ ๋ค์ด๋ง์ผ๋ฉด์, ์์ง ํ๊ธฐ๋์ง ์์ ์ฟ ํค๋ค์ ํจ๊ป ๋ณด๋ธ๋ค.
- Cookie ํค๋์ ์ด์ด ๋ถ์ฌ์ ๋ณด๋ธ๋ค.
Version 1
์ฟ ํค ๋ฒ์ 1์ RFC 2109๋ฅผ ๋ปํ๋ค.
RFC 2109๋ ๊ธฐ์กด ๋ท์ค์ผ์ดํ ์ฟ ํค์ ์คํ์ ์ฒด๊ณ์ ์ผ๋ก ์ ๋ฆฌํ๊ณ ์์ ํ๋ ค๊ณ ์๋ํ ๊ฒ
Version0 ์ฟ ํค ์์ฑ์ Name, Value, Expires, Domain, Path, Securer๊ฐ ์๋ค.
Version1 ์ฟ ํค ์์ฑ์ Name, Value, Comment, Domain, Max-Age, Path, Secure, Version์ด ์๋ค.
- Comment: ์๋ฒ๊ฐ ์ฟ ํค์ ์ฉ๋๋ฅผ ๊ธฐ๋กํด๋๊ธฐ ์ํ ์์ฑ
- Version: ์ฟ ํค๊ฐ ์ด๋ค ๋ช ์ธ์๋ฅผ ๋ฐ๋ฅด๋์ง ๋ฒ์ ์ ๋ํ๋ธ๋ค.
RFC 6265์ RFC 2109 ์ฟ ํค์ ์ฐจ์ด
- RFC 6265๊ฐ ๋์ค๋ฉด์ RFC 2109, RFC 2965๋ ํ๊ธฐ
- ๋๋ Set-Cookie ํค๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- RFC 2109๋ Name, Value, Comment, Domain, Max-Age, Path, Secure, Version
- RFC 6265๋ Name, Value, Expires, Domain, Max-Age, Path, Secure, HttpOnly
- Max-Age๋ฅผ ์ค์ ํ๋ฉด ์๋์ผ๋ก Expires๊ฐ ์ ํด์ง๋ค.
- HTTPOnly: ๋น HTTP ์์ฒญ์ ๋ง๋๋ค.
- ๊ตฌํ ๊ณ ๋ ค ์ฌํญ
- RFC 2109๋ ์ ์ ์์ด์ ํธ๊ฐ ์ต์ 300๊ฐ์ ์ฟ ํค,
์ฟ ํค๋ง๋ค ์ ์ด๋ 4096๋ฐ์ดํธ,
ํ ํธ์คํธ๋ ๋๋ฉ์ธ๋ง๋ค ์ต์ 20๊ฐ๋ฅผ ์ง์ํด์ผ ํ๋ค. - RFC 6265๋ ์ ์ ์์ด์ ํธ๊ฐ ์ต์ 3000๊ฐ์ ์ฟ ํค
์ฟ ํค๋ง๋ค ์ ์ด๋ 4096๋ฐ์ดํธ,
๋๋ฉ์ธ ๋น ์ต์ 50๊ฐ์ ์ฟ ํค๋ฅผ ์ ์ฅ ๊ฐ๋ฅํด์ผ ํ๋ค๊ณ ๋ช ์.
- RFC 2109๋ ์ ์ ์์ด์ ํธ๊ฐ ์ต์ 300๊ฐ์ ์ฟ ํค,
Set-Cookie2 ํค๋
Cookie2 ํค๋
Set-Cookie2์ Cookie2 ํค๋๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ผ๋ฏ๋ก ํจ์ค
5. ๐ ์ฟ ํค ๋ชฉ์ ๋ณ ์ฌ์ฉ
- ์ฟ ํค๋ ์น์ฌ์ดํธ์ ์์ฐจ๋ก ํธ๋์ญ์ ์ ๋ง๋ค์ด๋ด๋ ์ฌ์ฉ์๋ฅผ ์ถ์ ํ๋ ๋ฐ ์ฌ์ฉํ๋ค.
5.1 ์ฟ ํค์ ์ธ์ ์ถ์
Amazon.com์ ์๋ฅผ ํตํด ์ดํด๋ณด์.
- ๋ธ๋ผ์ฐ์ ๊ฐ Amazon.com์ ๋ฃจํธ ํ์ด์ง๋ฅผ ์ฒ์ ์์ฒญํ๋ค
1
2GET / HTTP/1.0
Host: www.amazon.com - ์๋ฒ๋ ํด๋ผ๋ฅผ ์ ์์๊ฑฐ๋ ์ํํธ์จ์ด URL๋ก ๋ฆฌ๋ค์ด๋ ํธ ์ํจ๋ค.
1
2HTTP/1.1 302 Found
Location: http://www.amazon.com:80/exec/abidos/subst/home/redirect.html - ํด๋ผ๋ ๋ฆฌ๋ค์ด๋ ํธ URL๋ก ์์ฒญ ๋ณด๋ธ๋ค.
1
2GET /exec/abidos/subst/home/redirect.html HTTP/1.0 302 Found
Host: http://www.amazon.com - ์๋ฒ๋ ์๋ต์
๋ ๊ฐ์ ์ธ์ ์ฟ ํค๋ฅผ ๊ธฐ์ ํ๊ณ (Set-Cookie
= ์ ์ฟ ํค ๋ธ๋ผ์ฐ์ ์ ๋ฃ์ด๋์ธ์)
์ฌ์ฉ์๋ฅผ ๋ค๋ฅธ URL๋ก ๋ฆฌ๋ค์ด๋ ํธ ์ํค๋ฉฐ
ํด๋ผ๋ ๋ค์ ์ด ์ฟ ํค๋ค์ ์ฒจ๋ถํ์ฌ ์์ฒญ์ ๋ณด๋ธ๋ค.(Cookie
)
์๋ก์ด URL(http://www.amazon.com/exec/abidos/subst/home/redirect.html/002-1135265-8016838)์ ์์ฒด์ ์ํ ์ ๋ณด๋ฅผ ๊ฐ๊ณ ์์ผ๋ฏ๋ก = ๋ฑ๋ฑํ URL1
2
3
4HTTP/1.1 302 Found
Date: Sun, 02 Dec 2001 03:20:47 GMT
Set-Cookie: session-id=002-1135265-8016838; path=/; domain=.amazon.com; expires=Suday, 09-Dec-2001 08:00:00 GMT
Set-Cookie: session-id-time=1007884800; path=/; domain=.amazon.com; expires=Suday, 09-Dec-2001 08:00:00 GMT - ํด๋ผ๋ ์๋ก์ด URL์ ์์ฒญ์ ์์ฒญ๋ฐ์๋ ๋ ๊ฐ์ ์ฟ ํค์ ํจ๊ป ๋ณด๋ธ๋ค.
1
2
3GET /exec/abidos/subst/home/redirect.html/002-1135265-8016838 HTTP/1.0
Host: http://www.amazon.com
Cookie: session-id=002-1135265-8016838; session-id-time=1007884800 - ์๋ฒ๋ home.html ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธ ์ํค๊ณ , ์ฟ ํค ๋ ๊ฐ๋ฅผ ๋ ์ฒจ๋ถํ๋ค.
1
2
3
4
5HTTP/1.1 302 Found
Date: Sun, 02 Dec 2001 03:45:40 GMT
Set-Cookie: ubid-main=430-8248051-6231206; path=/; domain=.amazon.com; expires=Tuesday, 09-Dec-2001 08:00:00 GMT
Set-Cookie: x-main=hQ...Bf; path=/; domain=.amazon.com; expires=Tuesday, 09-Dec-2001 08:00:00 GMT
Location: http://www.amazon.com/exec/abidos/subst/home/home.html/002-1135265-8016838 - ํด๋ผ๋ home.html ํ์ด์ง๋ฅผ ๊ฐ์ ธ์ค๊ณ , ์ด 4๊ฐ์ ์ฟ ํค๋ฅผ ์ ๋ฌํ๋ค.
1
2
3GET /exec/abidos/subst/home/home.html/002-1135265-8016838 HTTP/1.0
Host: http://www.amazon.com
Cookie: session-id=002-1135265-8016838; session-id-time=1007884800; ubid-main=430-8248051-6231206; x-main=hQ...Bf - ์๋ฒ๋ ์ฝํ ์ธ ๋ฅผ ๋ณด๋ธ๋ค.
์ฟ ํก ์ฒซ ํ๋ฉด ์ง์ ์ ์งํ๋๋
๊ด๊ณ ์๋ฃจ์ ํฌ๋ฆฌํ ์ค ์ธ์ ์ถ์ ๊ณผ์ ์ค ์ผ๋ถ
6. ๐ฎโ ์ฟ ํค ์ฌ์ฉ ์ ์ฃผ์์ฌํญ
6.1 ์ฟ ํค์ ์บ์ฑ
- ์ด์ ์ฌ์ฉ์์ ์ฟ ํค๊ฐ ๋ค๋ฅธ ์ฌ์ฉ์์๊ฒ ํ ๋น๋ผ๋ฒ๋ฆฌ๊ฑฐ๋,
๋๊ตฐ๊ฐ์ ๊ฐ์ธ ์ ๋ณด๊ฐ ๋ค๋ฅธ ์ด์๊ฒ ๋ ธ์ถ๋๋ ์ต์ ์ ์ํฉ์ด ์ผ์ด๋ ์๋ ์๋ค.
- ์บ์ ๋์ง ๋ง์์ผ ํ ๋ฌธ์๊ฐ ์๋ค๋ฉด ํ์ํ๋ผ
Control: no-cache="Set-Cookie"
- Set-Cookie ํด๋๋ฅผ ์บ์ ํ๋ ๊ฒ์ ์ ์ํ๋ผ
- ๊ฐ์ Set-Cookie ํค๋๋ฅผ ์ฌ๋ฌ ์ฌ์ฉ์์๊ฒ ๋ณด๋ด๊ฒ ๋๋ฉด ์ฌ์ฉ์ ์ถ์ ์ ์คํจํ ๊ฒ์ด๊ธฐ ๋๋ฌธ
- ์ด๋ค ์บ์๋ ์๋ต์ ์ ์ฅํ๊ธฐ ์ ์ Set-Cookie ํค๋๋ฅผ ์ ๊ฑฐํ๊ธฐ ๋๋ฌธ์, ๊ทธ ์บ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ํด๋ผ๋ Set-Cookie ํค๋ ์ ๋ณด๊ฐ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ฒ ๋์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
- ์บ์๊ฐ ๋ชจ๋ ์์ฒญ๋ง๋ค ์ ์๋ฒ์ ์ฌ๊ฒ์ฌ์์ผ ํด๋ผ๋ก ๊ฐ๋ ์๋ต์ Set-Cookie ํค๋ ๊ฐ์ ๊ธฐ์ ํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ๊ฐ์ ํ ์ ์๋ค. (์ฐธ๊ณ )
1
Cache-Control: must-revalidate, max-age=0
- ์บ์๊ฐ ๋ชจ๋ ์์ฒญ๋ง๋ค ์ ์๋ฒ์ ์ฌ๊ฒ์ฌ์์ผ ํด๋ผ๋ก ๊ฐ๋ ์๋ต์ Set-Cookie ํค๋ ๊ฐ์ ๊ธฐ์ ํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ๊ฐ์ ํ ์ ์๋ค. (์ฐธ๊ณ )
- Cookie ํค๋๋ฅผ ๊ฐ์ง๊ณ ์๋ ์์ฒญ์ ์ฃผ์ํ๋ผ
- ํด๋ผ ์์ฒญ์ Cookie ํค๋๊ฐ ํจ๊ป ์ค๋ฉด,
๊ฒฐ๊ณผ ์ฝํ ์ธ ๊ฐ ๊ฐ์ธ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ ์๋ ์๋ค๋ ํํธ๋ค. - ๊ฐ์ธ ์ ๋ณด๋ ์บ์ ๋์ง ์๋๋ก ํ์๋์ด ์์ด์ผ ํ์ง๋ง, ๊ทธ ํ์๋ฅผ ํ์ง ์๋ ์๋ฒ๋ ์๋ค.
- ๋ณด์์ ์ธ ์บ์๋ Cookie ํค๋๊ฐ ํฌํจ๋ ์์ฒญ์ ์๋ต์ผ๋ก ๊ฐ๋ ๋ฌธ์๋ ์บ์ ํ์ง ์์ ๊ฒ์ด๋ค.
6.2 ์ฟ ํค, ๋ณด์ ๊ทธ๋ฆฌ๊ณ ๊ฐ์ธ ์ ๋ณด
- ์ฟ ํค๋ฅผ ์ฌ์ฉํ์ง ์๋๋ก ๋นํ์ฑํ ์ํฌ ์ ์๊ณ , ๋ก๊ทธ ๋ถ์ ๊ฐ์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ๋์ฒดํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ฏ๋ก, ๊ทธ ์์ฒด๊ฐ ๋ณด์์์ผ๋ก ์์ฒญ๋๊ฒ ์ํํ ๊ฒ์ ์๋๋ค.
- ์๊ฒฉ DB์ ๊ฐ์ธ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ,
ํด๋น ๋ฐ์ดํฐ์ ํค๊ฐ์ ์ฟ ํค์ ์ ์ฅํ๋ ๋ฐฉ์์ ํ์ค์ผ๋ก ์ฌ์ฉํ๋ฉด,
ํด๋ผ์ ์๋ฒ ์ฌ์ด์ ์๋ฏผํ ๋ฐ์ดํฐ๊ฐ ์ค๊ฐ๋ ๊ฒ์ ์ค์ผ ์ ์๋ค. - ์ฟ ํค์ ๋ํ ๋ถ์ ์ ์ธ ์ฌ๋ก ์ด ๋ง๊ธฐ๋ ํ์ง๋ง,
์ ๊ณตํ๋ ๊ฐ์ธ ์ ๋ณด๋ฅผ ๋๊ฐ ๋ฐ๋์ง ๋ช ํํ ์๊ณ , ์ฌ์ดํธ์ ๊ฐ์ธ ์ ๋ณด ์ ์ฑ ์๋ง ์ ์ํ๋ค๋ฉด, ์ฟ ํค์ ๊ด๋ จํ ์ํ์ฑ๋ณด๋ค
์ธ์ ์กฐ์์ด๋ ํธ๋์ญ์ ์์ ํธ๋ฆฌํจ์ด ๋ ํฌ๋ค.
- HTTP ์๋ฒฝ๊ฐ์ด๋ ์ฑ ์ ๋ณด๊ณ ์ดํดํ ๋ด์ฉ์ ์ ๋ฆฌ ํ ๊ธ์ ๋๋ค.
์ฐธ๊ณ ์๋ฃ