์ธ์ฆ/์ธ๊ฐ > 3๊ฐ์ ํด๊ฒฐ์ฑ
"์ฟ ํค"๋ผ๋ ๋จ์ด์์ฒด๊ฐ ์น์ํด์์๋์ง ๋ง๋งํ๊ฒ ๋ณด์๋ค. ๋น๋ถ๊ฐ ์๋ธ์จ์ด ์ฟ ํค๋ ์
์๋ ๋์ง ์์ ์์ ์ด๋ค.๋ฌผ๋ก ์ฟ ํค์ ์ธ์
๋ชจ๋ ์ด์ ์ ๋ค์ด๋ดค๊ณ ๋์ถฉ ์ด๋ค ๊ฒ์ธ์ง๋ ์๊ณ ์์๊ณ ํ๋ก์ ํธ์ ์ ์ฉํด๋ณธ ์ ๋ ์๋ ๊ฒฝํ์ด ์์ง๋ง ์ด๋ ๊ฒ ๋ฅํ๊ฒ ๋ค์ด๊ฐ ์ ๋ ์์๋ค.. ์ฟ ํค&์ธ์
๊ทธ๋ฆฌ๊ณ ๊ฑฐ๊ธฐ์ ํ์๋๋ HTTPS๋ณด์ ๋ฑ์ ์์๋ณผ๊นํ๋ค. ๋ด์ฉ์ด ์๋ ๋ง๋ค๋ณด๋ ๊ธ์ ๋๋ ์ ํฌ์คํ
ํ ์์ ์ด๋ค.
Stateless & Stateful
๋ด๊ฐ ์ดํดํ ๋ฐ๋ก๋, HTTP๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์์ฒญ์ด ๋ ๋ฆฝ์ ์ธ Stateless(๋น์ํ์ฑ, ๋น์ฐ์์ฑ)์ด๋ค.
์๋ฒ๋ ๊ฐ ์์ฒญ์ด ๋ณ๊ฐ์ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์จ ๊ฒ์ฒ๋ผ ์ฒ๋ฆฌํ๋ฉฐ, ์ด์ ์์ฒญ๊ณผ ํ์ฌ ์์ฒญ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ ์งํ์ง ์๋๋ค.
๋ฐ๋๋ก Stateful(์ํ์ฑ, ์ฐ์์ฑ)์ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์์ ์ฐ๊ฒฐ ์ํ๋ฅผ ์ ์งํ๊ณ , ์ด์ ์์ฒญ๊ณผ ํ์ฌ ์์ฒญ ๊ฐ์ ๊ด๊ณ๋ฅผ ๊ธฐ์ตํ๋ฉฐ ์ฒ๋ฆฌํ๋๋ฐฉ์์ด๋ค.
Cookie & Session → Stateful
์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ ํ ํ์ด์ง๋ฅผ ์ด๋ํ๋ฉด, ์๋ฒ๋ ์ฌ์ฉ์๊ฐ ์ด์ ์ ๋ก๊ทธ์ธํ๋์ง ์ ์ ์๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฟ ํค๋ ์ธ์ (Stateful)์ ์ฌ์ฉํ์ฌ ์ํ๋ฅผ ์ ์งํ๋ค.
Stateful HTTP: Cookie & Session
์ฟ ํค์ ์ธ์ ์ ์ ์ฅ ์ฅ์๋ก ๊ตฌ๋ณํ ์ ์๋ค.
- Cookie
- ์ ์ฅ ์์น: ์ฟ ํค๋ ํด๋ผ์ด์ธํธ(์น ๋ธ๋ผ์ฐ์ )์ธก์ ์ ์ฅ๋๋ค.
- ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๊ณตํ ๋ฐ์ดํฐ๋ฅผ ํด๋ผ์ด์ธํธ ์ธก์ ์ ์ฅํด ์ดํ ์์ฒญ ์ ์ด ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์๋ฒ์๊ฒ ์ ์กํ๋ค. ์ด๋ฅผ ํตํด ์๋ฒ๋ ์ฌ์ฉ์๋ฅผ ์๋ณํ ์ ์๋ค.
- ์ฟ ํค๋ ์ด๋ค ๊ฐ์ด๋ ๊ฐ๋ฅํ๋, ์ผ๋ฐ์ ์ผ๋ก ๋ ธ์ถ ๋ฐฉ์ง๋ฅผ ์ํด ์ธ๊ฐ์ด ์ดํดํ ์ ์๋ ํํ๋ก ์ ์ฅํ๋ค.
- ์ฌ์ฉ๋ฐฉ์:
- ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ฟ ํค๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ: 'Set-Cookie' ํค๋๋ฅผ ํตํด ํด๋ผ์ด์ธํธ์ ์ ๋ฌํ๋ค.
'Set-Cookie': Web Server๊ฐ Web Browserํํ ํค๋์ ๋ด์์ ์ต์ ์ ์ ๊ณตํ๋ค. → Key-Value๊ฐ, Domain, Path, Expires, HttpOnly (๋ ์์ธํ๊ฒ ๋ค๋ฃฐ ์์ )
- ์ฅ์ : ํด๋ผ์ด์ธํธ ์ธก์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ฏ๋ก ์๋ฒ ์์์ ์ ์ฝํ ์ ์์.
- ๋จ์ : ํด๋ผ์ด์ธํธ ์ธก์ ์ ์ฅ๋๋ฏ๋ก, ๋ณด์์ ์ทจ์ฝํ๊ณ ๋ฐ์ดํฐ ํฌ๊ธฐ๊ฐ ์์(4KB) → ์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํด Web Storage ์ฌ์ฉ(์ถํ์ ๋ค๋ฃฐ์์ )
- Session
- ์ ์ฅ ์์น: ์ธ์ ์ ์๋ฒ ์ธก์ ์ ์ฅ๋๋ค.
- ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ธ์ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ด์ ์ ์ฅํ๊ณ ํด๋ผ์ด์ธํธ์๊ฒ ์ธ์ ID๋ง ์ ๋ฌํ์ฌ ์ด๋ฅผ ํตํด ํด๋ผ์ด์ธํธ๋ฅผ ์๋ณํ๋ค.
- ํด๋ผ์ด์ธํธ๋ ์ดํด ์์ฒญ์์ ์ธ์ ID๋ฅผ ์๋ฒ์ ์ ์กํ์ฌ ์๋ฒ๋ ํด๋น ์ธ์ ์ ์กฐํํด ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค.
- ์ฅ์ : ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์๋ฒ์ธก์ ์์ ํ๊ฒ ์ ์ฅ๊ฐ๋ฅํ๊ณ , ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์์๋ค.
- ๋จ์ : ์๋ฒ ์ธก ์์์ ๋ ๋ง์ด ์ฌ์ฉํ๊ฒ ๋๋ค.
- +@ JWT(JSON Web Token)statelessํ HTTP์์์ ์ธ์ฆ/์ธ๊ฐ์ ํด๊ฒฐ์ฑ
์ Cookie, Session, Token(JWT) ์ด ์ธ๊ฐ์ง๊ฐ ์๋ค.
- ๋์ ๋ฐฉ์:
- ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ๋ฉด, ์๋ฒ๋ JWT๋ฅผ ์์ฑํ์ฌ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌ
- ํด๋ผ์ด์ธํธ๋ JWT๋ฅผ ๋ก์ปฌ ์คํ ๋ฆฌ์ง๋ ์ฟ ํค์ ์ ์ฅํ๊ณ ์ดํ์ ๋ชจ๋ ์์ฒญ์ JWT๋ฅผ ํฌํจ์ํจ๋ค.
- ์๋ฒ๋ ์์ฒญ์ ๋ฐ์ ๋๋ง๋ค JWT๋ฅผ ๊ฒ์ฆํ๊ณ ํ ๊ทผ์ ํฌํจ๋ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ์์ฒญ์ ์ฒ๋ฆฌํ๋ค.
- ์ฅ์ :
- Stateless: ์๋ฒ๋ ์ฌ์ฉ์ ์ธ์ ์ ์ ์งํ ํ์๊ฐ ์๊ณ , ๋ชจ๋ ์ํ ์ ๋ณด๋ JWT์ ํฌํจ๋์ด ์์ด ์๋ฒ ๋ถํ๊ฐ ์ค์ด๋ ๋ค.
- ํ์ฅ์ฑ: ์๋ฒ ๊ฐ์ ์ํ๋ฅผ ๊ณต์ ํ ํ์๊ฐ ์์ด, ์๋ฒ๋ฅผ ์์ ๋กญ๊ฒ ํ์ฅํ ์ ์๋ค.
- ๋จ์ :
- ๋ณด์: JWT๊ฐ ๋
ธ์ถ๋๋ฉด, ํ ํฐ์ด ๋ง๋ฃ๋ ๋๊น์ง ๋๊ตฌ๋ ํด๋น ํ ํฐ์ ์ฌ์ฉํ ์ ์๊ฒ๋๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ํ ํฐ์ ๋ง๋ฃ ์๊ฐ์ ์ค์ ํ๊ณ ๋, HTTPS๋ฅผ ์ฌ์ฉํด ์ ์ก์ ๋ณดํธํด์ผํ๋ค. (์ถํ์ ๋ค๋ฃฐ์์ )
๋ค๋ฃฐ๊ฒ ๋๋ฌด๋ง๋ค.. - ํฌ๊ธฐ: JWT๋ ๋ชจ๋ ์ํ ์ ๋ณด๋ฅผ ํฌํจํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ฐ ์์ฒญ์ ํฌํจ๋๋ ๋ฐ์ดํฐ๊ฐ ์ปค์ง ์ ์๋ค.
- ๋ณด์: JWT๊ฐ ๋
ธ์ถ๋๋ฉด, ํ ํฐ์ด ๋ง๋ฃ๋ ๋๊น์ง ๋๊ตฌ๋ ํด๋น ํ ํฐ์ ์ฌ์ฉํ ์ ์๊ฒ๋๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ํ ํฐ์ ๋ง๋ฃ ์๊ฐ์ ์ค์ ํ๊ณ ๋, HTTPS๋ฅผ ์ฌ์ฉํด ์ ์ก์ ๋ณดํธํด์ผํ๋ค. (์ถํ์ ๋ค๋ฃฐ์์ )
- JWT ์์ฑ ๋ฐฉ์ :
- ํด๋น ๋งํฌ๋ฅผ ํตํด JWT๊ฐ ๋ง๋ค์ด์ง๋ ๋ฐฉ์์ ํ์ธํ ์ ์๋ค.
- https://jwt.io/#debugger-io
- ๋์ ๋ฐฉ์:
์ดํด๋ฅผ ๋๊ธฐ ์ํ ์์
๋ค์ ํฌ์คํ ์ Cookie์ ๋ํด ๋ ์์ธํ๊ฒ ์ค๋ช ํ ์์ ์ด๋ค.
โน๏ธ์ฐธ๊ณ
[ASAC 6๊ธฐ ๊ฐ์์๋ฃ]
https://phpcontrols.com/blog/cookie-and-session
'๐ปDEV-STUDY > HTTP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
3. Web Storage (0) | 2024.08.24 |
---|---|
2. HTTP Cookie (4) | 2024.08.23 |
ํ๋ก์(Proxy) (0) | 2024.08.20 |
HTTP Cache ๋์์๋ฆฌ + Hash (0) | 2024.08.20 |
HTTP Cache ๊ฐ๋ ๋ฐ Cache-control ํค๋ (0) | 2024.08.20 |