ํผ๋๋ก ๋์๊ฐ๊ธฐ
Dev.toSecurity
์๋ฌธ ์ฝ๊ธฐ
localStorage ํํผ, httpOnly Cookie๋ก ์์ฑํ๋ JWT ๋ณด์ ์ค๊ณ
๐ช Cookie-Based JWT Authentication
AI ์์ฝ
Context
localStorage ๊ธฐ๋ฐ ํ ํฐ ์ ์ฅ ๋ฐฉ์์ ๋ณด์ ์ทจ์ฝ์ ๋ ธ์ถ. XSS ๊ณต๊ฒฉ ๋ฐ์ ์ ์คํฌ๋ฆฝํธ๋ฅผ ํตํ ํ ํฐ ํ์ทจ ๊ฐ๋ฅ์ฑ ์กด์ฌ. ํ๋ก ํธ์๋ ๋จ์ ์๋ ํ ํฐ ๊ด๋ฆฌ๋ก ์ธํ ์ฝ๋ ๋ณต์ก๋ ์ฆ๊ฐ.
Technical Solution
- ์๋ต ๋ฐ๋ ๋์ httpOnly Cookie์ Access ๋ฐ Refresh Token์ ์ ์ฅํ๋ ๊ตฌ์กฐ
- ๋ธ๋ผ์ฐ์ ์ ์๋ ์ฟ ํค ์ ์ก ๋ฉ์ปค๋์ฆ์ ํ์ฉํ ๋คํธ์ํฌ ์์ฒญ ์ต์ ํ
- JavaScript ์ ๊ทผ์ ์ฐจ๋จํ์ฌ XSS ๊ณต๊ฒฉ์ผ๋ก๋ถํฐ ํ ํฐ์ ๋ณดํธํ๋ ๋ณด์ ๊ณ์ธต ์ค๊ณ
- ๋ณ๋์ DB ์กฐํ ์์ด ์๋ช ๋ ํ ํฐ์ ๊ฒ์ฆํ๋ Stateless ์ํคํ ์ฒ ์ ์ง
- ํค๋ ๋์ ์ฟ ํค์์ ํ ํฐ์ ์ฝ์ด ์ฒ๋ฆฌํ๋ ์ปค์คํ ์ธ์ฆ ํด๋์ค ๊ตฌํ
- ํ๋ก ํธ์๋์์ ํ ํฐ ์ ์ฅ ๋ฐ ํค๋ ๋ถ์ฐฉ ๋ก์ง์ ์ ๊ฑฐํ API ํธ์ถ ๋จ์ํ ์ ๋ต
Key Takeaway
๋ณด์์ฑ๊ณผ ๊ฐ๋ฐ ํธ์์ฑ์ ๋์์ ํ๋ณดํ๊ธฐ ์ํด ๋ธ๋ผ์ฐ์ ๋ด์ฅ ๋ณด์ ๋ฉ์ปค๋์ฆ์ ํ์ฉํ๋ ์ค๊ณ ์์น. Statelessํ JWT์ ์ฅ์ ๊ณผ Cookie์ ๋ณด์ ์์ฑ์ ๊ฒฐํฉํ ํ์ด๋ธ๋ฆฌ๋ ์ธ์ฆ ์ ๋ต์ ์ ํจ์ฑ.
์ค์ฒ ํฌ์ธํธ
Cookie ๊ธฐ๋ฐ JWT ๋์ ์ CSRF ๊ณต๊ฒฉ ๋ฐฉ์ง๋ฅผ ์ํด SameSite ์ค์ ๋ฐ CSRF Token ๊ฒ์ฆ ๋ก์ง์ ๋ฐ๋์ ๋ณํ ์ ์ฉํ ๊ฒ