[๋คํธ์ํฌ] ์ฟ ํค(Cookie), ์ธ์ (Session)์ด๋?
Web๊ฐ๋ฐ์ ํ๋ค๋ณด๋ฉด ํ์์ ์ผ๋ก ์ฌ์ฉํ๊ฒ ๋๋ ์น ํต์ ์ ์ํ ์ ์ฅ์์ธ ์ฟ ํค์ ์ธ์ ์ ๋ง์ฃผ์น๊ฒ ๋ฉ๋๋ค.
์ฐ์ ์ด๋ฌํ ์ ์ฅ์๊ฐ ํ์ํ ์ด์ ๋ฅผ ์๊ธฐ์ํด HTTP์ ํน์ง์ ์์์ผํฉ๋๋ค.
**HTTP์ HTTPS์ ์์ธํ ๋ด์ฉ์ ์๋์ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
https://j-su2.tistory.com/16?category=1016208
HTTP์ ํน์ง
HTTP ํต์ ๊ท์ฝ์ Connectionlessํ๊ณ Statelessํ๋ค๊ณ ํ ์ ์์ต๋๋ค.
- Connectionless(๋น์ฐ๊ฒฐ ์งํฅ)
- ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ์ฌ์ฉ์์ ์์ฒญ์ผ๋ก ์๋ฒ์ ์ ์ํ์ฌ ์์ฒญ์ ๋ํ ์๋ต์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ณ ์ฐ๊ฒฐ์ ์ข ๋ฃํฉ๋๋ค.
- Stateless(๋ฌด์ํ)
- HTTP ํต์ ์ ์์ฒญ์ ์๋ตํ๊ณ ์ ์์ ๋๊ธฐ ๋๋ฌธ์ ํด๋ผ์ด์ธํธ์ ์ํ์ ๋ณด๋ฅผ ์ ์งํ์ง ์์์ ์ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ๋ก๊ทธ์ธ์ ํ๊ณ ๊ทธ ์ํ๋ฅผ ์ ์งํ๊ธฐ ์ํด์ ์ฟ ํค์ ์ธ์ ์ด๋ผ๋ ๊ฐ๋ ์ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
์ฟ ํค(Cookie)๋?
์ฟ ํค๋ ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ ) ๋ก์ปฌ์ ์ ์ฅ๋๋ Key-Value์์ ์์ ๋ฐ์ดํฐ ํ์ผ๋ก, ์ฆ ์น ์ฌ์ดํธ๋ฅผ ์ ์ํ ๋ ์์ฑ๋๋ ์ ๋ณด๋ฅผ ๋ด์ ์์ํ์ผ์ ๋๋ค.
์ฟ ํค์ ํน์ง
- ์ฟ ํค์ด๋ฆ, ์ฟ ํค๊ฐ, ๋ง๋ฃ์๊ฐ, ์ ์กํ ๋๋ฉ์ธ๋ช , ์ ์กํ ๊ฒฝ๋ก, ๋ณด์์ฐ๊ฒฐ ์ฌ๋ถ, HttpOnly์ฌ๋ถ ๋ฑ์ผ๋ก ๊ตฌ์ฑ๋จ
- ์ต๋ 4KB๊น์ง ์ ์ฅ ๊ฐ๋ฅ
- ์๋ฒ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๋ ์ฉ๋๋ก ์๋ฒ ์์ฒญ์ HTTP์์ฒญ Headers์ ์๋์ผ๋ก ์ค๋ ค์ ๋ฐ๋ผ์ด
(SSR ์์ ์ LocalStorage๊ฐ์ ์ ๋ฐฉ๋ฒ์ด ์์ง๋ง, ์ฟ ํค๋ฐ์ดํฐ๋ ์ ์ ์์ด์ ์๋ฒ์์ HTML์ ๋ ๋๋ง ํ ๋ ๋ก๋ฉ์๊ฐ์ ๋จ์ถ์ํฌ ์ ์์) - ๋ฐ์ดํฐ ์ ํจ๊ธฐ๊ฐ ์ง์ ๊ฐ๋ฅ
- ํ์ผ์์ ์ฝ๊ธฐ ๋๋ฌธ์ ์ธ์ ๋ณด๋ค ์๋์ ์ผ๋ก ๋น ๋ฆ
์ฟ ํค์ ๋์๋ฐฉ์
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ๋ก๊ทธ์ธ ์์ฒญ
- ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ๋ก๊ทธ์ธ ์์ฒญ์ ์ ํจ์ฑ์ ํ์ธ(ID & PW ๊ฒ์ฌ)ํ๊ณ ์๋ต ํค๋์ set-cookie๋ก ์ ๋ณด๋ฅผ ์ถ๊ฐํ์ฌ ์๋ต
- ํด๋ผ์ด์ธํธ๋ ์ดํ ์๋ฒ์ ์์ฒญํ ๋ ์ ๋ฌ๋ฐ์ ์ฟ ํค๋ฅผ ์๋์ผ๋ก ์์ฒญ ํค๋์ ์ถ๊ฐํ์ฌ ์์ฒญ
์ฟ ํค์ ์ข ๋ฅ
๋ง๋ฃ๊ธฐ๊ฐ ๋ณ ์ข ๋ฅ
์ข ๋ฅ | ์ค๋ช |
์๊ตฌ ์ฟ ํค(Persisten Cookie) | ๋ง๋ฃ ๊ธฐ๊ฐ์ด ์์ด์ ๊ธฐ๊ฐ์ด ๋๋๋ฉด ์ญ์ |
์ธ์ ์ฟ ํค(Seesion Cookie) | ๋ง๋ฃ ๊ธฐ๊ฐ์ด ์์ด์ ๋ธ๋ผ์ฐ์ ์ข ๋ฃ์ ์ญ์ |
๋๋ฉ์ธ ๋ณ ์ข ๋ฅ
์ข ๋ฅ | ์ค๋ช |
First party Cookie | ๊ฐ์ ๋๋ฉ์ธ์์ ์์ฑ๋ ์ฟ ํค ์๋ธ ๋๋ฉ์ธ์ ๊ฒฝ์ฐ๋ ํฌํจ |
Third party Cookie | ๋ค๋ฅธ ๋๋ฉ์ธ์์ ์์ฑ๋ ์ฟ ํค img, font, iframe๋ฑ ๋ค๋ฅธ ๋๋ฉ์ธ์ ์์ฒญ์ ํด์ผํ ๊ฒฝ์ฐ ์์ฑ |
์ฟ ํค์ ๋จ์
- HTTP ์์ฒญ ์ ์๋์ผ๋ก ๋ชจ๋ ์ฟ ํค๊ฐ ์ ์ก๋์ด ๋ถํ์ํ ํธ๋ํฝ์ด ์ฆ๊ฐํ๊ธฐ๋ ํจ
- ๋ฐฉ๋ฌธํ๋ ์น ์ฌ์ดํธ์ ๋ํ ์ ๋ณด ๋ฐ ๊ฐ์ธ์ ๋ณด๊ฐ ๊ธฐ๋ก๋์ด ๋จ๊ธฐ ๋๋ฌธ์ ์ฌ์ํ ์นจํด์ ์์ง๊ฐ ์์
- ์๋ฒ๊ฐ ๊ฐ์ง๊ณ ์์ง ์๊ณ ์ฌ์ฉ์์๊ฒ ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ ์์๋ก ์์ ์ด ๊ฐ๋ฅํ๊ณ ๊ฐ๋ก์ฑ๊ธฐ ์ฌ์ ๋ณด์์ ์ทจ์ฝํจ
- *CSRF, *XSS ๋ฑ์ ๋ณด์์ ๋ฌธ์ ๊ฐ ์์
*CSRF : ์ฌ์ฉ์ ๊ถํ์ ์ด์ฉํ ๊ณต๊ฒฉ์ผ๋ก ์ฌ์ดํธ์ ๋ก๊ทธ์ธ ๋์ด์๋ ์ ์ ์๊ฒ ์ ์ฑ ์คํฌ๋ฆฝํธ๋ฅผ ์คํ
*XSS : token์ ํตํด ์ฌ์ฉ์์ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ํ์ทจ
๋ฐ๋ผ์ ์ฟ ํค๋ ๋ฏผ๊ฐํ๊ฑฐ๋ ์ค์ํ ์ ๋ณด๋ฅผ ๋ด๊ธฐ์๋ ์ํ์ฑ์ด ์์ด์ ์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํด ์ธ์ ์ด ๋ฑ์ฅํ์์ต๋๋ค.
์ธ์ (Session)์ด๋?
์ธ์ ์ ์๋ฒ์ธก์์ ๊ด๋ฆฌ๋๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ข ๋ฃ๋๊ธฐ ์ ๊น์ง ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ ์งํด์ฃผ๋ ๊ธฐ์ ์ ๋๋ค.
์ธ์ ์ ํน์ง
- ์ธ์ ID๋ ์น ๋ธ๋ผ์ฐ์ ๋น 1๊ฐ์ฉ ์์ฑ๋์ด ์น ์ปจํ ์ด๋์ ์ ์ฅ๋๋ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ ๋ธ๋ผ์ฐ์ ์ข ๋ฃ์ ์๋ฉธ
- ๊ฐ์ ๋ธ๋ผ์ฐ์ ํญ ์์์๋ ์๋ก๊ณ ์นจ์ ํด๋ ์ ์ง๋จ
- ๋จ๋ฐ์ฑ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ธฐ์ ์ ํฉ(์ํ ์กฐํ ์กฐ๊ฑด ๋ฑ)
- ์๋ฒ์ ์ ์ฅ๋๋ฏ๋ก ์ฟ ํค๋ณด๋ค ๋ณด์์ธก๋ฉด์์ ๋ฐ์ด๋จ
- ์ ํ ์๊ฐ์ ์ ์ฉํด ์ผ์ ์๊ฐ ์๋ต์ด ์์ผ๋ฉด ์ธ์ ์ ์ ๊ฑฐํ๋๋ก ์ค์ ๊ฐ๋ฅ
์ธ์ ์ ๋์๋ฐฉ์
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ๋ก๊ทธ์ธ ์์ฒญ
- ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ๋ก๊ทธ์ธ ์์ฒญ์ ์ ํจ์ฑ์ ํ์ธ(ID & PW ๊ฒ์ฌ)ํ๊ณ uniqueํ sessionid๋ฅผ ์ ์ฅ
- ์๋ฒ๊ฐ ์๋ตํ ๋ ์๋ตํค๋์ set-cookie: sessionid:****** ํํ๋ก ์ถ๊ฐํ์ฌ ์๋ต
- ํด๋ผ์ด์ธํธ๋ ์ดํ ์๋ฒ์ ์์ฒญ์ ์ ๋ฌ๋ฐ์ session ID๊ฐ์ ์ ์ฅ๋ ์ธ์ ์ ์ฅ์์์ ์ฐพ์๋ณด๊ณ ์ ํจ์ฑ ๊ฒ์ฌํ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ์๋ต
- ์๋ฒ์์๋ ์์ฒญํค๋์ ์ธ์ ID๊ฐ์ ์ ์ฅ๋ ์ธ์ ์ ์ฅ์์์ ์ฐพ์๋ณด๊ณ ์ ํธ์ฑ ๊ฒ์ฌํ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ์๋ต
์ธ์ ์ ๋จ์
- ์ฌ์ฉ์๊ฐ ๊ณ์ํด์ ๋์ด๋ ์๋ก ์๋ฒ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง์ด ํ์๋ก ํ๊ธฐ ๋๋ฌธ์ ์๋ฒ ๊ณผ๋ถํ๋ก ์ธํ ์ฑ๋ฅ ์ ํ ๋ฌธ์ ์ ์ด ๋ฐ์
- ์๋ฒ์์ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ฟ ํค์ ๋นํด ๋น๊ต์ ๋๋ฆผ
*์ธ์ ๊ณผ ์ฟ ํค ์ธ์๋ ์ ์ฌํ๊ฒ ์ ์ฅ์๋ฅผ ์ ๊ณตํ๋ ์น ์คํ ๋ฆฌ์ง๊ฐ ์์ต๋๋ค. ์น ์คํ ๋ฆฌ์ง์ ๋ํด์ ์๋์ ๋ด์ฉ์ ์ฐธ๊ณ ํ์ธ์.
[์ฐธ๊ณ ]
https://kangdanne.tistory.com/197