Cookie์ Session
1. ๋ฑ์ฅ๋ฐฐ๊ฒฝ
ํด๋ผ์ด์ธํธ๊ฐ ์ ๋ณด๋ฅผ ์ ์งํ๋ statefulํ ์ฑ๊ฒฉ์ ์๋น์ค๊ฐ ๋ง์์ง
(๋ก๊ทธ์ธ์ ํตํด ๋ณผ ์ ์๋ ์๋น์ค, ์ฅ๋ฐ๊ตฌ๋ ๋ฑ)
๊ทธ๋ฐ๋ฐ HTTP์ ํน์ง (๋งํฌ) ์ค ๋ฌด์ํ(stateless)
, ๋น์ฐ๊ฒฐ์ฑ(connectionless)
ํ์ ์ ๋ณด๋ฅผ ์ ์งํ ์ ์๋ค.
์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ํต์ ์ ํ ๋ ๋ง๋ค ์๋ฒ๋ ํด๋ผ์ด์ธํธ๊ฐ ๋๊ตฌ์ธ์ง ์ธ์ฆ์ ๊ณ์ํด์ผ ํ๋ค.
๐คท๐ปโโ๏ธ : ์๋ ๋๋ฌด ๋ฒ๊ฑฐ๋กญ์์! ๊ธฐ์ตํ๊ฒ ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํ์ง?
=> ๊ทธ๋์ ๋์จ ๊ฒ์ด ๋ฐ๋ก Cookie
์ session
!
ํด๋ผ์ด์ธํธ์ ์ธ์ฆ์ ์ ์งํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
๋ง์ฝ ์ฟ ํค์ ์ธ์ ์ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด
- ์ผํ๋ชฐ์ ์ ์
- ๋ ๋๊ตฌ์ผ? ๋ก๊ทธ์ธ ํด
- ์ํ ํด๋ฆญ -> ์์ธํ๋ฉด์ผ๋ก ์ด๋
- ๋ ๋๊ตฌ์ผ? ๋ก๊ทธ์ธ ํด
- ์ฃผ๋ฌธ
- ๋ ๋๊ตฌ์ผ? ๋ก๊ทธ์ธ ํด
- ์ ์ ๊ทน๋๋ ธ ๐ฅ๐ฅ
=> ์ด๋ฐ์ ์ฌ์ฉ์๋ ์ฌ์ดํธ๋ฅผ ๊บผ๋ฒ๋ฆฌ๊ณ ๋ง ๊ฒ์ด๋ค.
์ฟ ํค์ ์ธ์ ์ ์ฌ์ฉํ์ ๊ฒฝ์ฐ
์ต์ด ๋ก๊ทธ์ธ
์ ํ๋ฉด, ์๋ฒ๊ฐ ๊ทธ ์ฌ์ฉ์์ ๋ํ ์ธ์ฆ์ ์ ์ง
ํ๋ค.
์ฆ, ์ฟ ํค์ ์ธ์ ์ ํตํด ์๋ฒ๋ ํด๋ผ์ด์ธํธ๋ฅผ ๊ธฐ์ตํ๊ณ ์๋ ๊ฒ!
2. Cookie๋?
ํด๋ผ์ด์ธํธ ์ธก(๋ธ๋ผ์ฐ์ )์์ ๊ด๋ฆฌ๋๋ ์์ ๊ธฐ๋ก ์ ๋ณด ํ์ผ
์ฟ ํค์ ํน์ง
- ์ฌ์ฉ์ ์ธ์ฆ์ด
์ ํจํ ์๊ฐ์ ๋ช ์
ํ ์ ์๋ค - ํ ๋ฒ ์ ํจ ์๊ฐ์ด ์ ํด์ง๋ฉด
๋ธ๋ผ์ฐ์ ๋ฅผ ๋๋๋ผ๋ ์ธ์ฆ์ด ์ ์ง
๋๋ค
2-1. ์ฟ ํค ๊ตฌ์ฑ ์์
- ์ด๋ฆ
- ๊ฐ๊ฐ์ ์ฟ ํค๋ฅผ ๊ตฌ๋ณํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ด๋ฆ
- ๊ฐ
- ์ฟ ํค๊ฐ ๊ฐ๊ณ ์๋ ๊ฐ
- ์ ํจ์๊ฐ
- ์ฟ ํค์ ์ ์ง์๊ฐ
- ๋๋ฉ์ธ
- ์ฟ ํค๋ฅผ ์ ์กํ ๋๋ฉ์ธ
- ๊ฒฝ๋ก
- ์ฟ ํค๋ฅผ ์ ์กํ ์์ฒญ ๊ฒฝ๋ก
2-2. ์ฟ ํค ๋์ ๋ฐฉ์
์ด์ ์ ํฌ์คํ
ํ cookie, session, token ์ฐธ๊ณ
- 1) ํด๋ผ์ด์ธํธ๊ฐ ํ์ด์ง๋ฅผ ์์ฒญ
- 2) ์๋ฒ์์ ์ฟ ํค๋ฅผ ์์ฑ
- 3) HTTP ํค๋์ ์ฟ ํค๋ฅผ ํฌํจ์์ผ ์๋ต
- ์ด ์๋ต์
Set-Cookie
ํค๋๊ฐ ํฌํจ๋์ด ์๋ค - ๋ธ๋ผ์ฐ์ ๋
Set-Cookie
์ ๋ค์ด์๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ, ์ด๊ฒ์ด ๋ฐ๋ก์ฟ ํค
Set-Cookie: normal=yes
์๋ฒ์์ ์ ์กํ๋ ์๋ต์ ํฌํจ๋ โ Set-Cookie โ ํค๋
- ์ด ์๋ต์
- 4) ๋ธ๋ผ์ฐ์ ๊ฐ ์ข ๋ฃ๋์ด๋ ์ฟ ํค ๋ง๋ฃ๊ธฐ๊ฐ์ด ์์ผ๋ ํด๋ผ์ด์ธํธ์์ ๋ณด๊ดํจ
- 5) ์ฟ ํค๊ฐ ์กด์ฌํ๋ฉด, ์์ฒญ์์ HTTP ํค๋์ ์ฟ ํค๋ฅผ ํจ๊ป ๋ณด๋ด์ ์์ฒญ
Cookie: normal=yes;
๋ธ๋ผ์ฐ์ ์์ ๋ณด๋ด๋ ์์ฒญ์ ํฌํจ๋ โ Cookie โ ํค๋
- 6) ์๋ฒ์์ ์ฟ ํค๋ฅผ ์ฝ์ด ์ด์ ์ํ ์ ๋ณด๋ฅผ ๋ณ๊ฒฝํ ํ์๊ฐ ์์ ๊ฒฝ์ฐ, ์ฟ ํค๋ฅผ ์ ๋ฐ์ดํธํด์ ๋ณ๊ฒฝ๋ ์ฟ ํค๋ฅผ HTTP ํค๋์ ํฌํจ์์ผ ์๋ต
์ฟ ํค๋ ์๋ฒ์์ ์ฌ์ฉ์๋ฅผ ์๋ณํ๊ธฐ ์ํ ์๋จ
์ผ๋ก ์ฌ์ฉ๋๋ค. </br>
2-3. ์ฟ ํค ์ฌ์ฉ ์
- ๋ก๊ทธ์ธ ์, โ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ์ฅํ์๊ฒ ์ต๋๊น?โ
- ์ผํ๋ชฐ์ ์ฅ๋ฐ๊ตฌ๋ ๊ธฐ๋ฅ
3. Session์ด๋?
์ธ์
์ ์ฟ ํค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๊ณ ์์ง๋ง, ์ฟ ํค
๋ ์ฌ์ฉ์ ์ ๋ณด ํ์ผ์ ๋ธ๋ผ์ฐ์ ์ ์ ์ฅ
ํ๊ณ ์ธ์
์ ์๋ฒ ์ธก์์ ๊ด๋ฆฌ
ํ๋ค.
์๋ฒ์์๋ ํด๋ผ์ด์ธํธ๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํด ์ธ์
ID๋ฅผ ๋ถ์ฌ
ํ๋ฉฐ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ์ ์ ์ํด์ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ข
๋ฃํ ๋๊น์ง ์ธ์ฆ์ํ๋ฅผ ์ ์ง
ํ๋ค.
๋ฌผ๋ก ์ ์ ์๊ฐ์ ์ ํ์ ๋์ด ์ผ์ ์๊ฐ ์๋ต์ด ์๋ค๋ฉด ์ธ์
์ ๋๋๋ก ์ค์ ์ด ๊ฐ๋ฅํ๋ค.
- ์ฌ์ฉ์์ ๋ํ ์ ๋ณด๋ฅผ ์๋ฒ์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์โฆ
- ์ฟ ํค๋ณด๋ค
๋ณด์
์ ์ข๋ค - ์ฌ์ฉ์๊ฐ ๋ง์์ง์๋ก
์๋ฒ ๋ฉ๋ชจ๋ฆฌ
๋ฅผ ๋ง์ด ์ฐจ์งํ๋ค
- ์ฟ ํค๋ณด๋ค
๋์ ์ ์๊ฐ ๋ง์ ์น ์ฌ์ดํธ์ธ ๊ฒฝ์ฐ ์๋ฒ์ ๊ณผ๋ถํ๋ฅผ ์ฃผ๊ฒ ๋๋ฏ๋ก ์ฑ๋ฅ ์ ํ์ ์์ธ
3-1. ์ธ์ ๋์ ๋ฐฉ์
- 1) ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ ์ ์ ์ธ์
ID๋ฅผ ๋ฐ๊ธ
Set-Cookie
ํค๋๋ก ์ธ์ ID๋ฅผ ๋ฃ์ด๋๋ค
- 2) ํด๋ผ์ด์ธํธ๋ ์ธ์ ID์ ๋ํด ์ฟ ํค๋ฅผ ์ฌ์ฉํด์ ์ ์ฅ ( ์ด๋ ์ฟ ํค์ ์ด๋ฆ์ JSESSIONID)
- 3) ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ๋ค์ ์ ์ ์ ์ด ์ฟ ํค๋ฅผ ์ด์ฉํด์ ์ธ์
ID ๊ฐ์ ์๋ฒ์ ์ ๋ฌ
Cookie
ํค๋์ ์ธ์ ID๋ฅผ ๋ฃ์ด์ ์๋ฒ์๊ฒ ์์ฒญ- ์๋ฒ๋ ๊ทธ ์ธ์ ID๋ฅผ ์ฝ์ด ์ด๋ค ์ฌ์ฉ์๊ฐ ๋ณด๋ธ ์์ฒญ์ธ์ง ํ๋จํ๋ค
3-2. ์ธ์ ํน์ง
- 1) ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ๊ณ ์ ID๋ฅผ ๋ถ์ฌ
- 2) ์ธ์ ID๋ก ํด๋ผ์ด์ธํธ๋ฅผ ๊ตฌ๋ถํด์ ํด๋ผ์ด์ธํธ์ ์๊ตฌ์ ๋ง๋ ์๋น์ค ์ ๊ณต
- 3) ์๋ฒ์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์, ์ฟ ํค๋ณด๋ค ๋ณด์ ์ฐ์
- 4) ์ฌ์ฉ์๊ฐ ๋ง์ ์๋ก ์๋ฒ ๋ฉ๋ชจ๋ฆฌ ๋ง์ด ์ฐจ์งํจ
3-3. ์ธ์ ์ฌ์ฉ ์
๋ก๊ทธ์ธ ๊ฐ์ ๋ณด์์ ์ค์ํ ์์ ์ํ ์ ์ฌ์ฉ </br>
์ดํ ์์ฒญ๋ถํฐ ์ ์ก๋ Cookie ํค๋์ ์ธ์ ID๋ฅผ ์ฝ์ด ์ด๋ค ์ฌ์ฉ์์ ์์ฒญ์ธ์ง๋ฅผ ํ๋จํ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ค. </br>
๋๋ถ๋ถ์ ์น ์ฌ์ดํธ์ ๋ก๊ทธ์ธ ๊ตฌํ์ด ์ด๋ฐ ๋ฐฉ์์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค. </br>
4. ์ฟ ํค์ ์ธ์ ์ ์ฐจ์ด
์ญํ ์ด ๋น์ทํ๊ณ , ๋์์๋ฆฌ๋ ๋น์ทํ๋ค.
๊ทธ ์ด์ ๋ ์ธ์
๋ ๊ฒฐ๊ตญ ์ฟ ํค๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ!
โ | ์ฟ ํค | ์ธ์ |
์ ์ฅ์์น |
๋ธ๋ผ์ฐ์ | ์๋ฒ |
์ ์ง๊ธฐ๊ฐ |
์ฟ ํค ๋ง๋ฃ๊ธฐ๊ฐ๊น์ง | ๋ธ๋ผ์ฐ์ ์ข ๋ฃ์๊น์ง |
๋ณด์ |
๋น๊ต์ ๋์จ | ๋น๊ต์ ์ข์ |
์์ฒญ์๋ |
๋น๊ต์ ๋น ๋ฆ | ๋น๊ต์ ๋๋ฆผ |
- 1) ์ฌ์ฉ์ ์ ๋ณด ํ์ผ ์ ์ฅ์์น
- ์ฟ ํค : ๋ธ๋ผ์ฐ์
- ์ธ์ : ์๋ฒ
- 2) ์ธ์ฆ์ํ ์ ์ง ์๊ฐ
- ์ฟ ํค : ์ฟ ํค๋ง๋ฃ๊ธฐ๊ฐ๊น์ง
- ์ธ์
: ๋ธ๋ผ์ฐ์ ์ข
๋ฃ ์๊น์ง ์ธ์ฆ์ํ ์ ์ง
- (์ ์ ์๊ฐ ์ ํ์ผ๋ก ์ผ์ ์๊ฐ ์๋ต์์ผ๋ฉด ์ธ์ ์ข ๋ฃ ์ค์ ๊ฐ๋ฅ)
- 3) ๋ณด์
- ์ฟ ํค : ๋ธ๋ผ์ฐ์ ์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ์ข์ง ์์
- ์ธ์
: ์๋ฒ์ ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ ์ฟ ํค๋ณด๋จ ์ข์
- (ํ์ง๋ง ์ค๊ฐ์ ํ์ทจ๋นํ ์ ์์ด์ ์์ ํ์ง ์๋ค)
- 3) ์์ฒญ์๋
- ์ฟ ํค : ๋น ๋ฆ
- ์ธ์
: ์ฟ ํค๋ณด๋ค ๋๋ฆผ
- (์๋ฒ์์ ์ฒ๋ฆฌ๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์)
์ธ์
์ ์ฌ์ฉ์ ์ ๋งํผ ์๋ฒ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐจ์งํ๊ธฐ ๋๋ฌธ์
์์ฆ์ ํ ํฐ ๊ธฐ๋ฐ์ ์ธ์ฆ๋ฐฉ์
์ ์ฌ์ฉํ๋ค.
๊ทธ ์ค JWT(Json Web Token)
์ด ์๋ค.
JWT ํฌ์คํธ (๋งํฌ)๋ ๋ณ๋๋ก ์ ๋ฆฌํ๋ค.
๋ฐ์ ํ๋ ์ฟ ํค, SameSite
์ฟ ํค๋ ๋ณด์๊ณผ ๊ฐ์ธ์ ๋ณด๋ณดํธ๊ฐ ์ทจ์ฝํ๋ค.
๋ฐ๋ผ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์ฟ ํค๋ฅผ ๋ค๋ฃจ๋ ๋ฐฉ์์ด ์ ์ฐจ ๋ฐ๋์ด๊ฐ๊ณ ์๋ค.
๊ทธ ์ค ์ฟ ํค์ ์ถ๊ฐ๋ sameSite ์์ฑ์ ์์๋ณด์.