[Medium] ๐ cookie, sessionStorage, localStorage
๋น๊ตโ
| ์์ฑ | cookie | sessionStorage | localStorage |
|---|---|---|---|
| ์๋ช ์ฃผ๊ธฐ | ๋ง๋ฃ ์๊ฐ(Expires) ๋๋ ์ต๋ ๋ณด์กด ์๊ฐ(Max-Age)์ ์ค์ ํ์ง ์์ผ๋ฉด, ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ด์ง๋ฅผ ๋ซ์ผ๋ฉด ์ญ์ | ํ์ด์ง๋ฅผ ๋ซ์ผ๋ฉด ์ญ์ | ๋ช ์์ ์ผ๋ก ์ญ์ ํ ๋๊น์ง ์๊ตฌ ๋ณด์กด |
| HTTP Request | ์, Cookie header๋ฅผ ํตํด ์๋ฒ์ ์ ์ก ๊ฐ๋ฅ | ์๋์ค | ์๋์ค |
| ์ด ์ฉ๋ | 4KB | 5MB | 5MB |
| ์ ๊ทผ ๋ฒ์ | ์๋์ฐ/ํญ ๊ฐ ๊ณต์ | ๋์ผ ํญ๋ง | ์๋์ฐ/ํญ ๊ฐ ๊ณต์ |
| ๋ณด์์ฑ | JavaScript๋ HttpOnly cookies์ ์ ๊ทผ ๋ถ๊ฐ | ์์ | ์์ |
์ฉ์ด ์ค๋ช โ
Persistent cookies๋ ๋ฌด์์ธ๊ฐ?
์๊ตฌ cookie๋ ์ฌ์ฉ์ ๋ธ๋ผ์ฐ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ฅ๊ธฐ๊ฐ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์
๋๋ค. ๊ตฌ์ฒด์ ์ผ๋ก๋ ์์์ ์ธ๊ธํ ๋ง๋ฃ ์๊ฐ์ ์ค์ ํ์ฌ ๊ตฌํํฉ๋๋ค(Expires ๋๋ Max-Age).
๊ฐ์ธ ๊ตฌํ ๊ฒฝํโ
cookieโ
1. ๋ณด์ ๊ฒ์ฆโ
์ผ๋ถ ๋ ๊ฑฐ์ ํ๋ก์ ํธ๋ ๋ณด์ ์ํ๊ฐ ์ข์ง ์์ ๊ณ์ ํ์ทจ ๋ฌธ์ ๊ฐ ๋น๋ฒํ๊ฒ ๋ฐ์ํ์ฌ ์ด์ ๋น์ฉ์ด ํฌ๊ฒ ์ฆ๊ฐํ์ต๋๋ค. ๋จผ์ Fingerprint ๋ผ์ด๋ธ๋ฌ๋ฆฌ(์ปค๋ฎค๋ํฐ ๋ฒ์ ์ ํ๋ ์ฝ 60%, ์ ๋ฃ ๋ฒ์ ์ ๋ฌด๋ฃ ํ ๋น๋ 2๋ง ๊ฑด)๋ฅผ ์ฑํํ์ฌ ๋ก๊ทธ์ธํ๋ ์ฌ์ฉ์๋ฅผ ๋๋ฐ์ด์ค์ ์์น ์ ๋ณด ๋งค๊ฐ๋ณ์๋ก ๊ณ ์ ํ visitID๋ก ์๋ณํ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ cookie๊ฐ ๋งค๋ฒ HTTP ์์ฒญ ์ ์ ์ก๋๋ ํน์ฑ์ ํ์ฉํ์ฌ ๋ฐฑ์๋์์ ์ฌ์ฉ์์ ํ์ฌ ์ํฉ(๋๋ฐ์ด์ค ๋ณ๊ฒฝ ๋๋ ์์น ์ด์ ๋ณ๋)์ ํ์ธํ๊ณ , ์ด์์ด ๊ฐ์ง๋๋ฉด ๋ก๊ทธ์ธ ๊ณผ์ ์์ OTP ์ธ์ฆ(ํ์ฌ ์๊ตฌ์ ๋ฐ๋ผ ์ด๋ฉ์ผ ๋๋ SMS)์ ๊ฐ์ ๋ก ํธ๋ฆฌ๊ฑฐํ์ต๋๋ค.
2. ํ๋ก๋ชจ์ ์ฝ๋ URLโ
์ ํ ์น์ฌ์ดํธ ์ด์ ์ ์ ํด ๋ง์ผํ
์ ๋ต์ผ๋ก ํ๋ ฅ ํํธ๋์๊ฒ ์ ์ฉ URL์ ์ ๊ณตํ์ฌ ์ ์
๊ณผ ํ๋ณด๋ฅผ ์ฝ๊ฒ ํ์ต๋๋ค. ์ ์
์ ํตํด ๋ค์ด์จ ๊ณ ๊ฐ์ด ํด๋น ํ๋ก๋ชจํฐ์ ์ค์ ์ ์ํ๋๋ก ๋ณด์ฅํ๊ธฐ ์ํด cookie์ expires ํน์ฑ์ ํ์ฉํ์ฌ ๊ตฌํํ์ต๋๋ค. ์ฌ์ฉ์๊ฐ ์ฌ์ดํธ์ ์ ์
๋ ์์ ๋ถํฐ 24์๊ฐ ์ด๋ด(์ ํ ์๊ฐ์ ์ด์ ์ธก์์ ๊ฒฐ์ ๊ฐ๋ฅ)์๋ ํ๋ก๋ชจ์
์ฝ๋๊ฐ ์ ํจํ๋ฉฐ, ์ฌ์ฉ์๊ฐ ์๋์ ์ผ๋ก URL์ ํ๋ก๋ชจ์
์ฝ๋ ๋งค๊ฐ๋ณ์๋ฅผ ์ญ์ ํด๋ ๋ฑ๋ก ์ cookie์์ ํด๋น ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ ธ์ ์ ์ฉํ๊ณ , 24์๊ฐ ํ์ ์๋์ผ๋ก ๋ง๋ฃ๋ฉ๋๋ค.
localStorageโ
1. ์ฌ์ฉ์ ํ๊ฒฝ ์ค์ ์ ์ฅโ
- ์ฌ์ฉ์์ ๊ฐ์ธ ํ๊ฒฝ ์ค์ ์ ์ฅ์ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค. ์: ๋คํฌ ๋ชจ๋, i18n ์ธ์ด ์ค์ ๋ฑ.
- ๋๋ ๋ก๊ทธ์ธ token ์ ์ฅ.