[KUIT] 10์ฃผ์ฐจ ๋ณด์ถฉ - ํ† ํฐ ์ €์žฅ ์œ„์น˜, ์„ธ์…˜ ์ธ์ฆ ๋ฐฉ์‹๊ณผ JWT, .env ํŒŒ์ผ
ยท
KUIT
์•„๋ž˜ ๊ธ€์€ KUIT ์›น ๋ถ€์›๋ถ„๋“ค์„ ๋Œ€์ƒ์œผ๋กœ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.Access Token๊ณผ Refresh Token์€ ์–ด๋””์— ์ €์žฅํ•ด์•ผํ• ๊นŒ?๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ณ€์ˆ˜๋Š” ๋„ค ๊ฐ€์ง€ ๊ณต๊ฐ„์— ์ €์žฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.์ฟ ํ‚ค๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€์„ธ์…˜์Šคํ† ๋ฆฌ์ง€๋ฉ”๋ชจ๋ฆฌ์ด ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ’์„ ์ €์žฅํ•˜๋ ค๋ฉด ์›น์•ฑ์˜ ๋กœ์ปฌ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ’์„ ์ €์žฅํ•ด์•ผโ†’ ์ด ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋กœ ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅโ†’ ๋˜ ํ•˜๋‚˜ ๊ธฐ์–ตํ•ด์•ผ ํ•  ํŠน์ง•์€ ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•˜๋ฉด ๋‚ด๋ถ€ ๋ณ€์ˆ˜๊ฐ€ ์ดˆ๊ธฐํ™”๋จ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋กœ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•œ ์ฟ ํ‚ค, ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€, ์„ธ์…˜์Šคํ† ๋ฆฌ์ง€โ†’ XSS ๊ณต๊ฒฉ์— ์ทจ์•ฝ(๋‹ค๋งŒ ์ฟ ํ‚ค์˜ ๊ฒฝ์šฐ HttpOnly ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋ฉด, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋Š” ์ฟ ํ‚ค ์ƒ์„ฑ ๊ฐ€๋Šฅ) ์ถœ์ฒ˜: https://velog.io/@iamtaehoon/sagah Refresh Token โ†’ HttpOnly..
[PROlog] Access Token์„ zustand์—์„œ ๊ด€๋ฆฌ + ํ† ํฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
ยท
Project/PROlog
(โ€ป ์ด ๋‚ด์šฉ์€ ์•„์ง ์ •ํ™•ํ•˜๊ฒŒ ๊ตฌํ˜„๋˜๋Š”์ง€ ๊ฒ€์ฆ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค! ๋ฐฑ์—”๋“œ์™€ ์†Œํ†ต์—†์ด ํ”„๋ก ํŠธ์—์„œ ๋…๋‹จ์ ์œผ๋กœ ์ž‘์„ฑํ•œ ๊ฒƒ์ด๋‹ˆ ์ฐธ๊ณ ๋งŒ ํ•ด์ฃผ์„ธ์š”!!!) ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•  ๋•Œ, 1. ๋‹จ์ˆœํžˆ ๋ฐฑ์—”๋“œํ•œํ…Œ ๊ตฌ๊ธ€๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์ธ๊ฐ€์ฝ”๋“œ๋ฅผ ๋ณด๋‚ด๋ฉด 2. ๋ฐ›์€ ํ† ํฐ์„ localStorage์— ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ–ˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ฐฉ์‹์€ ๋ณด์•ˆ์„ ๊ณ ๋ คํ–ˆ์„ ๋•Œ ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์•„๋‹ˆ๋‹ค. localStorage์— ํ† ํฐ์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ์€ ๊ถŒ์žฅ๋˜๋Š” ๋ฐฉ๋ฒ•์ด ์•„๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ˆ˜์ •ํ•˜๋ ค ํ•œ๋‹ค. ๋กœ๊ทธ์ธ์„ ํ•˜๋ฉด ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธํ•œํ…Œ Access Token๊ณผ Refresh Token์„ ๋ฐ›์Œ Access Token์€ ์ „์—ญ ๋ณ€์ˆ˜๋กœ ๊ด€๋ฆฌ(Zustand ํ™œ์šฉ), RefreshToken์€ httpOnly ์ฟ ํ‚ค๋กœ ์„œ๋ฒ„๋กœ ๋ถ€ํ„ฐ ๋ฐ›์Œ(์ด ๋•Œ ์„œ๋ฒ„์™€ ํด๋ผ์ด..