Session
"์ธ์ ์ ์ ์งํ์๊ฒ ์ต๋๊น"
์ง๋ ๊ธ์ ์ด์ด์ ์ด๋ฒ์ Session์ ๋ํด ์์๋ณด๊ณ ์ ํ๋ค.
์ฌ์ฉ์๊ฐ ์น ์ฌ์ดํธ๋ฅผ ๋ฐฉ๋ฌธํ ๋ ๋ก๊ทธ์ธ ์ํ๋ฅผ ์ด๋ป๊ฒ ์ ์งํ๋ ๊ฒ์ผ๊น ?
์ด๋ฌํ ์ผ์์ ์ธ ๊ธฐ๋ฅ์๋ '์ธ์ (Session)'์ด๋ผ๋ ๊ฐ๋ ์ด ์จ์ด์๋ค. ์ด๋ฒ ํฌ์คํ ์์ ์น ์ดํ๋ฆฌ์ผ์ด์ ์์ ์ธ์ ์ด ์ด๋ป๊ฒ ๋์ํ๋์ง์ ๋ํด ์ง๋ ์ฟ ํค์ ๋น๊ตํด์ ์์๋ณด๊ณ ์ ํ๋ค.
์น ์๋ฒ ๋ด ์ ์ฅ + ๋จ, SESSION_ID๋ ์น ๋ธ๋ผ์ฐ์ ๋ด ์ ์ฅ ๋ฐ ์ ์ก
- ์๊ฐ์ ๋ฐ๋ผ ๊ธฐ์กด ๊ฐ์ ์์ ์ค๊น?
- ์ธ์ ๋ฐ์ดํฐ๊ฐ ์ผ์ ์๊ฐ ๋์ ์ฌ์ฉ๋์ง ์์ผ๋ฉด ์๋์ผ๋ก ์ญ์ ํด์ผํ๋ค. ์ธ์ ๋ฐ์ดํฐ๋ ์ฃผ๋ก ์ฌ์ฉ์ ํ๋์ ๋ฐ๋ผ ์์ฑ๋๋ค. ์๊ฐ์ด ์ง๋๋ฉด ๋ ์ด์ ์ ํจํ์ง ์๊ฒ ๋ง๋ค์ด์ผํ๋ค. → ๋ฐฑ์๋ ๊ฐ๋ฐ์๊ฐ ๋ฐฐ์น ์์ ์ ์ค์ ํ ์ ์๋ค.
Session์ ์ฌ์ฉ์์ ์ํ ์ ๋ณด๋ฅผ ์น ์๋ฒ ์ธก์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์น ๋ธ๋ผ์ฐ์ ์ฟ ํค์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ง์ ์ ์ฅํ์ง ์๊ณ , ์ธ์ ID(Session ID)๋ง์ ์ฟ ํค์ ์ ์ฅํ์ฌ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ํต์ ์ด ์ด๋ฃจ์ด์ง๋ค. ์ธ์ ID๋ ์๋ฒ์ ์ ์ฅ๋ ์ฌ์ฉ์ ์ ๋ณด์ ์ฐ๊ฒฐ๋์ด, ์น ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ๋ค์ด์ฌ ๋๋ง๋ค ์ด ์ธ์ ID๋ฅผ ์ฌ์ฉํด ๊ด๋ จ ์ ๋ณด๋ฅผ ์กฐํํ๋ค.
- Session์ ๋์ ์๋ฆฌ: ์น ์๋ฒ๋ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ๋ฐ์ ์ธ์ ID๋ก ์๋ฒ ์ธก ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํด๋น ์ฌ์ฉ์์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ค. ์ด ๊ณผ์ ์์ ์น ์๋ฒ๋ DB์ ์ธ์ ์ ๋ณด๋ฅผ ์ ์ฅํด์ผํ๋ค. ์ด DB๋ ๋ณดํต ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค(์: Redis)๋ฅผ ์ฌ์ฉํ๋ค. (์์ฒญ→์กฐํ → ์ฒ๋ฆฌ→๋ฐํ)
- Session์ ์น ๋ธ๋ผ์ฐ์ ๋ก๋ถํฐ ์ฟ ํค๋ก SESSION_ID๋ฅผ ๋ฐ์ ํด๋น ์์ฒญ ์ ์ ์ ์ ๋ณด๋ฅผ ์กฐํํ๋ค
- ๋ฐ๋ผ์ ์๋๊ฐ ๋งค์ฐ ์ค์ํ๋ค: API ํธ์ถ๋ง๋ค Session ์กฐํ๊ฐ ํ์ํ๋ค
- ๋ฐ๋ผ์ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ DB์ธ Redis๋ฅผ ๋ง์ด์ฌ์ฉํ๋ค.
- ๋ฐ๋ผ์ ์๋๊ฐ ๋งค์ฐ ์ค์ํ๋ค: API ํธ์ถ๋ง๋ค Session ์กฐํ๊ฐ ํ์ํ๋ค
โ ๏ธ Session์ ์ฌ์ฉํ๋ค๊ณ ํด์ Cookie๋ฅผ ์ฌ์ฉํ์ง ์๋๊ฒ ์๋๋ค
→ ์น ๋ธ๋ผ์ฐ์ ๋ด Cookie์๋ ์ด๋ค ์ธ์ ์ธ์ง ์๊ธฐ์ํ ID๊ฐ์ ์ ์ฅํ๋๊ฒ ๊ผญ ํ์ํ๋ค.
์ฟ ํค์ ๋จ์ → ์ธ์ ์ ์ฅ์
1. ์ฟ ํค์ ๋จ์ : ์ฟ ํค๋ ์ฌ์ฉ์์ ๋ฏผ๊ฐ์ ๋ณด๋ฅผ ์น ๋ธ๋ผ์ฐ์ ์ ์ ์ฅํ๋ฏ๋ก ๋ณด์์ ์ทจ์ฝํ๋ค. (๋ฌผ๋ก HttpOnly, Secure, SameSite ๋ฑ์ผ๋ก ๋ฐฉ์ด๋ ๊ฐ๋ฅํ๋ค.) → ํด๋น ํฌ์คํ ๊ธ ์ฐธ๊ณ 2024.08.23 - [๐ปDEV-STUDY/ASAC] - 2. HTTP Cookie
๋ํ, ์น ๋ธ๋ผ์ฐ์ ๊ฐ์ ๊ณต์ ๊ฐ ๋์ง ์์ผ๋ฉฐ ์ ์ฅํ ์ ์๋ ๋ฐ์ดํฐ ์ฉ๋์ด ์์ ๋ง์ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ธฐ์ ๋นํจ์จ ์ ์ด๋ค.
- ์ธ์ ์ ์ฅ์ : ์ธ์ ์ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์น ์๋ฒ ์ธก์ ์์ ํ๊ฒ ์ ์ฅํ๋ค๋ณด๋ ๋ฏผ๊ฐ ์ ๋ณด๋ค์ด ์น ์๋ฒ ์ธก์ ์์ ์ ์ผ๋ก ์ ์ฅํ๊ฒ ๋๊ณ ์ธ์ ์ ๋ณด๋ ์๋ฒ ์ค์ ์ง์ค์ ์ผ๋ก ์ ์ฅํ๊ธฐ๋๋ฌธ์ ์ฌ๋ฌ ์น ๋ธ๋ผ์ฐ์ ์์ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ๊ณต์ ๊ฐ ๊ฐ๋ฅํ๋ค.
2. ์ฟ ํค์ ๋จ์ : ์ฟ ํค๋ Domain + Path๋ง ์ผ์นํ๋ค๋ฉด ํด๋น ์น ์๋ฒ๋ก ๋ชจ๋ ์ฟ ํค๋ฅผ ๋ด์ ์์ฒญํ๊ธฐ๋๋ฌธ์ ์ฟ ํค๋ก ์ ์ฅํ๋ ค๋ ์ ๋ณด๋์ด ๋ง์์๋ก ์์ฒญ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ค. ์ด์๋ฐ๋ผ ๋คํธ์ํฌ ์ค๋ฒํค๋(Network Overhead)๊ฐ ๋ฐ์ํ๋ค.(์ฟ ํค๋ฅผ ๋จ์ง ์ ์ฅ์๋ก ์จ์๋ ์๋๋์ด์ . → ์น ์๋ฒ์๊ฒ ์๋ ค์ฃผ์ง ์์๋ ๋๋ ์ ๋ณด์ ๊ฒฝ์ฐ ์น ์คํ ๋ฆฌ์ง๋ฅผ ์ฌ์ฉ) → ํด๋น ํฌ์คํ ๊ธ ์ฐธ๊ณ 2024.08.24 - [๐ปDEV-STUDY/ASAC] - 3. Web Storage
- ์ธ์
์ ์ฅ์ : ์ธ์
์ ๋ฐ์ดํฐ๋ฅผ ์น ์๋ฒ ์ธก์ ์ ์ฅํ๋ฏ๋ก ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์์ฒญ์ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ค.
- ๋จ, ๋งค ์์ฒญ๋ง๋ค Session ์ ์ฅ์์ ์ ์ฅ๋ ์ธ์ ์ ๋ณด๋ฅผ ์กฐํํด์ผ ํ๋ฏ๋ก, ๋น ๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค(Redis)๋ฅผ ์ฌ์ฉ์ ๊ณ ๋ คํด์ผํ๋ค.
๋ค์ ํฌ์คํ ์ ์น ๋ณด์์ ๋ํด์ ์์๋ณด๊ณ ์ ํ๋ค. (HTTPS์ CORS)
๋ค์ ํฌ์คํ ์ ๋์ผ๋ก ์ฟ ํค ์ธ์ ์๋ฆฌ์ฆ๋ฅผ ๋๋ด๋ณด๊ณ ์ ํ๋ค..
โน๏ธ์ฐธ๊ณ
[ASAC 6๊ธฐ ๊ฐ์์๋ฃ]
https://phpcontrols.com/blog/cookie-and-session
'๐ปDEV-STUDY > HTTP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฆฌ๋ ์ค ์ & ๋ช ๋ น์ด (0) | 2024.08.30 |
---|---|
5. ์น ๋ณด์ HTTPS & CORS (0) | 2024.08.27 |
3. Web Storage (0) | 2024.08.24 |
2. HTTP Cookie (4) | 2024.08.23 |
1. ์ฟ ํค(Cookie) & ์ธ์ (Session) + JWT (0) | 2024.08.23 |