2025๋…„ 9์›” 29์ผยท6๋ถ„ ์ฝ๊ธฐ

์›น ์•ฑ ์„ธ์…˜ ๊ด€๋ฆฌ: ์ฟ ํ‚ค vs JWT vs ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ

์›น ์•ฑ์˜ ์„ธ์…˜ ๊ด€๋ฆฌ๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค: ์ฟ ํ‚ค ์„ธ์…˜, JWT, ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์„ ์œ„ํ˜‘ ๋ชจ๋ธ๊ณผ ํ˜„์‹ค์ ์ธ ๋กœ๊ทธ์•„์›ƒ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ค‘์‹ฌ์œผ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์›น ์•ฑ ์„ธ์…˜ ๊ด€๋ฆฌ: ์ฟ ํ‚ค vs JWT vs ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ

์„ธ์…˜ ๊ด€๋ฆฌ๋Š” ์‹ค์ œ๋กœ ๋ฌด์—‡์„ ํ•˜๋Š”๊ฐ€

์„ธ์…˜์€ ๋ˆ„๊ตฐ๊ฐ€ ๋กœ๊ทธ์ธํ•œ ํ›„ ์•ฑ์ด ํ•œ ๊ฐ€์ง€ ์งˆ๋ฌธ์— ๋‹ตํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค: "์ง€๊ธˆ ๋‹น์‹ ์€ ๋ˆ„๊ตฌ์ธ๊ฐ€?" ๊ทธ ๋‹ต์ด ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์•ฑ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฌด์—‡์„ ๋ณผ ์ˆ˜ ์žˆ๊ณ , ๋ฌด์—‡์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์–ด๋–ค ๋™์ž‘์„ ์ฐจ๋‹จํ•ด์•ผ ํ• ์ง€ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

"๋กœ๊ทธ์ธ ์ƒํƒœ ์œ ์ง€"๋„ ์‚ฌ์‹ค์€ ๋ณด์•ˆ์ƒ์˜ ์„ ํƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž์˜ ์‹ ์› ์œ ํšจ ๊ธฐ๊ฐ„์„ ์–ผ๋งˆ๋‚˜ ๊ธธ๊ฒŒ ๋‘˜์ง€, ์‹ ์›์„ ์ฆ๋ช…ํ•˜๋Š” ์ •๋ณด๊ฐ€ ์–ด๋””์— ์ €์žฅ๋ ์ง€, ๊ทธ ์ฆ๋ช… ์ •๋ณด๊ฐ€ ๋ณต์‚ฌ๋˜๋ฉด ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚ ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ์›น ์•ฑ ๊ตฌ์„ฑ์€ ์„ธ ๊ฐ€์ง€ ๊ตฌ์„ฑ ์š”์†Œ์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค:

  • ์ฟ ํ‚ค ๊ธฐ๋ฐ˜ ์„œ๋ฒ„ ์„ธ์…˜: ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ฟ ํ‚ค๋ฅผ ์ €์žฅํ•˜๊ณ  ์„œ๋ฒ„๊ฐ€ ๊ฐ ์š”์ฒญ๋งˆ๋‹ค ์„ธ์…˜์„ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.
  • JWT ์•ก์„ธ์Šค ํ† ํฐ: ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ช…๋œ ํ† ํฐ์„ ๋ณด๋‚ด๋ฉด ์„œ๋ฒ„๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐํšŒ ์—†์ด ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ: ์งง์€ ์ˆ˜๋ช…์˜ ์•ก์„ธ์Šค ํ† ํฐ์„ ์ƒˆ๋กœ ๋ฐœ๊ธ‰๋ฐ›์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋” ์˜ค๋ž˜ ์ง€์†๋˜๋Š” ์ž๊ฒฉ ์ฆ๋ช…์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ๋“ค์€ ์„œ๋กœ ๊ฒฝ์Ÿํ•˜๋Š” "์Šคํƒ€์ผ"์ด๋ผ๊ธฐ๋ณด๋‹ค ๋™์ผํ•œ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋ฅผ ๋‹ค๋ฃจ๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค: ์†๋„ ๋Œ€ ์ œ์–ด, ๋‹จ์ˆœ์„ฑ ๋Œ€ ์œ ์—ฐ์„ฑ, "์ง€๊ธˆ ๋ฐ”๋กœ ๋ฌดํšจํ™”ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?" ๋Œ€ "์Šค์Šค๋กœ ๋งŒ๋ฃŒ๋˜๋Š”๊ฐ€?" ๊ฐ™์€ ๊ธฐ์ค€์ž…๋‹ˆ๋‹ค.

์œ ์šฉํ•œ ํ‰๊ฐ€ ๋ฐฉ๋ฒ•์€ ์ด๋ ‡์Šต๋‹ˆ๋‹ค: ๊ณต๊ฒฉ์ž๊ฐ€ ์•ฑ์ด ์‹ ์›์„ ์ฆ๋ช…ํ•˜๋Š” ๊ฒƒ(์ฟ ํ‚ค๋‚˜ ํ† ํฐ)์„ ํ›”์น˜๋ฉด ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๊ณ  ์–ผ๋งˆ๋‚˜ ์˜ค๋ž˜ ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€? ์ฆ‰๊ฐ์ ์ธ ์„œ๋ฒ„ ์ธก ์ œ์–ด๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋Š” ์ฟ ํ‚ค ์„ธ์…˜์ด ์œ ๋ฆฌํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค(๊ฐ•์ œ ๋กœ๊ทธ์•„์›ƒ์ด๋‚˜ ์ฆ‰์‹œ ์ž ๊ธˆ ๋“ฑ). JWT๋Š” ์—ฌ๋Ÿฌ ์„œ๋น„์Šค ๊ฐ„์— ์ƒํƒœ ์—†์ด ๊ฒ€์ฆํ•ด์•ผ ํ•  ๋•Œ ์ ํ•ฉํ•˜์ง€๋งŒ ์ฆ‰์‹œ ์ฒ ํšŒ๊ฐ€ ํ•„์š”ํ•˜๋ฉด ๋ฒˆ๊ฑฐ๋กœ์›Œ์ง‘๋‹ˆ๋‹ค.

์–ด๋–ค ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ๋ชจ๋“  ์ƒํ™ฉ์—์„œ ์ด๊ธฐ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์˜ฌ๋ฐ”๋ฅธ ์ ‘๊ทผ๋ฒ•์€ ์œ„ํ˜‘ ๋ชจ๋ธ, ๋กœ๊ทธ์•„์›ƒ ์š”๊ตฌ ์‚ฌํ•ญ์˜ ์—„๊ฒฉ์„ฑ, ๊ทธ๋ฆฌ๊ณ  ํŒ€์ด ํ˜„์‹ค์ ์œผ๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ณต์žก์„ฑ ์ˆ˜์ค€์— ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

์ •๋‹ต์„ ๋ฐ”๊พธ๋Š” ์œ„ํ˜‘ ๋ชจ๋ธ๋“ค

์ข‹์€ ์„ธ์…˜ ์„ค๊ณ„๋Š” "์ตœ๊ณ ์˜" ํ† ํฐ ์œ ํ˜•์— ๋œ ์˜์กดํ•˜๊ณ , ์‹ค์ œ๋กœ ์–ด๋–ค ๊ณต๊ฒฉ์„ ๊ฒฌ๋ŽŒ์•ผ ํ•˜๋Š”์ง€์— ๋” ์˜์กดํ•ฉ๋‹ˆ๋‹ค.

๊ณต๊ฒฉ์ž๊ฐ€ ๋ธŒ๋ผ์šฐ์ € ์ €์žฅ์†Œ(์˜ˆ: localStorage)์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํ›”์นœ๋‹ค๋ฉด, ํŽ˜์ด์ง€ JavaScript๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” JWT ์•ก์„ธ์Šค ํ† ํฐ์€ ์‰ฝ๊ฒŒ ํƒˆ์ทจ๋ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ์ฟ ํ‚ค๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค: HttpOnly๋กœ ์„ค์ •๋œ ๊ฒฝ์šฐ ์ผ๋ฐ˜ ํŽ˜์ด์ง€ ์ฝ”๋“œ์—์„œ ์ฝ์„ ์ˆ˜ ์—†์–ด์„œ ๋‹จ์ˆœํ•œ "ํ† ํฐ ํ›”์น˜๊ธฐ" ๊ณต๊ฒฉ์„ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ธฐ๊ธฐ๋ฅผ ๊ฐ€์ง„ ์‚ฌ๋žŒ์ด ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฑฐ๋‚˜(๋ถ„์‹ค ๋…ธํŠธ๋ถ, ์•…์„ฑ์ฝ”๋“œ, ๊ณต์œ  ์ปดํ“จํ„ฐ) ๋ธŒ๋ผ์šฐ์ € ํ”„๋กœํ•„์—์„œ ์ฟ ํ‚ค๋ฅผ ๋ณต์‚ฌํ•  ์ˆ˜๋Š” ์žˆ์Šต๋‹ˆ๋‹ค.

XSS(๊ณต๊ฒฉ์ž ์ฝ”๋“œ๊ฐ€ ํŽ˜์ด์ง€์—์„œ ์‹คํ–‰๋˜๋Š” ์ƒํ™ฉ)๋Š” ๋ชจ๋“  ๊ฒƒ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. XSS๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ณต๊ฒฉ์ž๋Š” ์•„๋ฌด๊ฒƒ๋„ ํ›”์น˜์ง€ ์•Š๊ณ ๋„ ํ”ผํ•ด์ž์˜ ์ด๋ฏธ ๋กœ๊ทธ์ธ๋œ ์„ธ์…˜์„ ์‚ฌ์šฉํ•ด ์กฐ์ž‘์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. HttpOnly ์ฟ ํ‚ค๋Š” ์„ธ์…˜ ๋น„๋ฐ€์„ ์ฝ์ง€ ๋ชปํ•˜๊ฒŒ ๋ง‰์•„์ฃผ์ง€๋งŒ, ๊ณต๊ฒฉ์ž๊ฐ€ ํŽ˜์ด์ง€์—์„œ ์š”์ฒญ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

CSRF(๋‹ค๋ฅธ ์‚ฌ์ดํŠธ๊ฐ€ ์›์น˜ ์•Š๋Š” ๋™์ž‘์„ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ๊ณต๊ฒฉ)๋Š” ์ฃผ๋กœ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ž๋™์œผ๋กœ ์ฟ ํ‚ค๋ฅผ ๋ถ™์—ฌ ๋ณด๋‚ด๋Š” ์ฟ ํ‚ค ๊ธฐ๋ฐ˜ ์„ธ์…˜์„ ์œ„ํ˜‘ํ•ฉ๋‹ˆ๋‹ค. ์ฟ ํ‚ค์— ์˜์กดํ•œ๋‹ค๋ฉด ๋ช…ํ™•ํ•œ CSRF ๋ฐฉ์–ด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค: ์˜๋„์ ์ธ SameSite ์„ค์ •, ์•ˆํ‹ฐ-CSRF ํ† ํฐ, ์ƒํƒœ ๋ณ€๊ฒฝ ์š”์ฒญ์˜ ์‹ ์ค‘ํ•œ ์ฒ˜๋ฆฌ ๋“ฑ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด Authorization ํ—ค๋”๋กœ ๋ณด๋‚ด๋Š” JWT๋Š” ์ „ํ†ต์  CSRF์— ๋œ ์ทจ์•ฝํ•˜์ง€๋งŒ, JavaScript๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๊ณณ์— ์ €์žฅํ•˜๋ฉด XSS์— ๋…ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

์žฌ์‚ฌ์šฉ ๊ณต๊ฒฉ(ํƒˆ์ทจ๋œ ์ž๊ฒฉ ์ฆ๋ช… ์žฌ์‚ฌ์šฉ)์€ ์„œ๋ฒ„ ์ธก ์„ธ์…˜์ด ๊ฐ•ํ•œ ๋ฉด๋ชจ๋ฅผ ๋ณด์ด๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค: ์„ธ์…˜ ID๋ฅผ ์ฆ‰์‹œ ๋ฌดํšจํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์งง์€ ์ˆ˜๋ช…์˜ JWT๋Š” ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์‹œ๊ฐ„์„ ์ค„์ด์ง€๋งŒ, ํ† ํฐ์ด ์œ ํšจํ•œ ๋™์•ˆ์—๋Š” ์žฌ์‚ฌ์šฉ์„ ๋ง‰์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

๊ณต์œ  ๊ธฐ๊ธฐ๋‚˜ ๋ถ„์‹ค๋œ ํœด๋Œ€ํฐ์€ "๋กœ๊ทธ์•„์›ƒ"์„ ์‹ค์ œ ์œ„ํ˜‘ ๋ชจ๋ธ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋ณดํ†ต์˜ ๊ฒฐ์ •์€ ์ด๋Ÿฐ ์งˆ๋ฌธ์œผ๋กœ ๊ท€๊ฒฐ๋ฉ๋‹ˆ๋‹ค: ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค๋ฅธ ๊ธฐ๊ธฐ์—์„œ ๊ฐ•์ œ ๋กœ๊ทธ์•„์›ƒํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€, ์–ผ๋งˆ๋‚˜ ๋นจ๋ฆฌ ์ ์šฉ๋˜์–ด์•ผ ํ•˜๋Š”๊ฐ€, ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์ด ํƒˆ์ทจ๋˜๋ฉด ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚˜๋Š”๊ฐ€, "๊ธฐ์–ตํ•˜๊ธฐ(remember me)" ์„ธ์…˜์„ ํ—ˆ์šฉํ•˜๋Š”๊ฐ€? ๋งŽ์€ ํŒ€์€ ์ง์› ์ ‘๊ทผ์„ ๊ณ ๊ฐ ์ ‘๊ทผ๋ณด๋‹ค ๋” ์—„๊ฒฉํ•˜๊ฒŒ ๋‹ค๋ฃจ๊ธฐ ๋•Œ๋ฌธ์— ํƒ€์ž„์•„์›ƒ๊ณผ ๋ฌดํšจํ™” ๊ธฐ๋Œ€์น˜๊ฐ€ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

์ฟ ํ‚ค ์„ธ์…˜: ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๊ณ  ๋ฌด์—‡์„ ๋ณดํ˜ธํ•˜๋Š”๊ฐ€

์ฟ ํ‚ค ๊ธฐ๋ฐ˜ ์„ธ์…˜์€ ๊ณ ์ „์ ์ธ ๊ตฌ์„ฑ์ž…๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธ ํ›„ ์„œ๋ฒ„๋Š” ์„ธ์…˜ ๋ ˆ์ฝ”๋“œ(์ข…์ข… ID์™€ ์‚ฌ์šฉ์ž ID, ์ƒ์„ฑ ์‹œ๊ฐ„, ๋งŒ๋ฃŒ ๋“ฑ ํ•„๋“œ)๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋Š” ์„ธ์…˜ ID๋งŒ ์ฟ ํ‚ค์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์š”์ฒญ์—์„œ ๋ธŒ๋ผ์šฐ์ €๋Š” ๊ทธ ์ฟ ํ‚ค๋ฅผ ๋ณด๋‚ด๊ณ  ์„œ๋ฒ„๋Š” ์„ธ์…˜์„ ์กฐํšŒํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

ํฐ ๋ณด์•ˆ ์ด์ ์€ ์ œ์–ด์ž…๋‹ˆ๋‹ค. ์„ธ์…˜์€ ๋งค๋ฒˆ ์„œ๋ฒ„์—์„œ ๊ฒ€์ฆ๋ฉ๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๋ฅผ ๊ฐ•์ œ๋กœ ๋กœ๊ทธ์•„์›ƒํ•ด์•ผ ํ•œ๋‹ค๋ฉด ์„œ๋ฒ„ ์ธก ์„ธ์…˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด ์ฆ‰์‹œ ์ž‘๋™์ด ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ฟ ํ‚ค๋ฅผ ์—ฌ์ „ํžˆ ๊ฐ€์ง€๊ณ  ์žˆ์–ด๋„ ์„œ๋ฒ„์˜ ๊ฑฐ๋ถ€๊ฐ€ ์‹ค์ œ๋กœ ๋กœ๊ทธ์•„์›ƒ์„ ๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค.

๋งŽ์€ ๋ณดํ˜ธ๋Š” ์ฟ ํ‚ค ์„ค์ •์—์„œ ์˜ต๋‹ˆ๋‹ค:

  • HttpOnly: JavaScript๊ฐ€ ์ฟ ํ‚ค๋ฅผ ์ฝ์ง€ ๋ชปํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  • Secure: HTTPS์—์„œ๋งŒ ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
  • SameSite: ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํฌ๋กœ์Šค์‚ฌ์ดํŠธ ์š”์ฒญ์— ์ฟ ํ‚ค๋ฅผ ๋ณด๋‚ผ ๋•Œ๋ฅผ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.

์„ธ์…˜ ์ƒํƒœ๋ฅผ ์–ด๋””์— ์ €์žฅํ•˜๋А๋ƒ๊ฐ€ ํ™•์žฅ์„ฑ์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ์•ฑ ๋ฉ”๋ชจ๋ฆฌ์— ์„ธ์…˜์„ ์œ ์ง€ํ•˜๋ฉด ๋‹จ์ˆœํ•˜์ง€๋งŒ ์—ฌ๋Ÿฌ ์„œ๋ฒ„๋ฅผ ์šด์˜ํ•˜๊ฑฐ๋‚˜ ์ž์ฃผ ์žฌ์‹œ์ž‘ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋‚ด๊ตฌ์„ฑ์— ์ข‹๊ณ , ๋งŽ์€ ํ™œ์„ฑ ์„ธ์…˜์— ๋Œ€ํ•ด ๋น ๋ฅธ ์กฐํšŒ๊ฐ€ ํ•„์š”ํ•˜๋ฉด Redis๊ฐ€ ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค. ํ•ต์‹ฌ์€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค: ์„œ๋ฒ„๋Š” ๊ฐ ์š”์ฒญ์—์„œ ์„ธ์…˜์„ ์ฐพ๊ณ  ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฟ ํ‚ค ์„ธ์…˜์€ ๊ด€๋ฆฌ์ž ๋Œ€์‹œ๋ณด๋“œ๋‚˜ ์ง์› ํฌํ„ธ์ฒ˜๋Ÿผ ์—„๊ฒฉํ•œ ๋กœ๊ทธ์•„์›ƒ ๋™์ž‘์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์ง์›์ด ํ‡ด์‚ฌํ•˜๋ฉด ์„œ๋ฒ„ ์ธก ์„ธ์…˜์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด ํ† ํฐ ๋งŒ๋ฃŒ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์ ‘๊ทผ์ด ์ฆ‰์‹œ ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค.

JWT ์•ก์„ธ์Šค ํ† ํฐ: ๊ฐ•์ ๊ณผ ์œ„ํ—˜ํ•œ ๋ถ€๋ถ„

JWT(JSON Web Token)๋Š” ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ํด๋ ˆ์ž„(์‚ฌ์šฉ์ž ID, ์—ญํ• , ํ…Œ๋„ŒํŠธ ๋“ฑ)๊ณผ ๋งŒ๋ฃŒ ์‹œ๊ฐ„์„ ๋‹ด์€ ์„œ๋ช…๋œ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค. API๋Š” ์„œ๋ช…๊ณผ ๋งŒ๋ฃŒ๋ฅผ ๋กœ์ปฌ์—์„œ ๊ฒ€์ฆํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ˜ธ์ถœ ์—†์ด ์š”์ฒญ์„ ์ธ์ฆํ•ฉ๋‹ˆ๋‹ค.

์ด ๋•Œ๋ฌธ์— JWT๋Š” API ์šฐ์„  ์ œํ’ˆ, ๋ชจ๋ฐ”์ผ ์•ฑ, ์—ฌ๋Ÿฌ ์„œ๋น„์Šค๊ฐ€ ๋™์ผํ•œ ์‹ ์›์„ ๊ฒ€์ฆํ•ด์•ผ ํ•˜๋Š” ์‹œ์Šคํ…œ์—์„œ ์ธ๊ธฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๋ฐฑ์—”๋“œ ์ธ์Šคํ„ด์Šค๊ฐ€ ์žˆ์„ ๋•Œ ๊ฐ๊ฐ์ด ๊ฐ™์€ ํ† ํฐ์„ ๊ฒ€์ฆํ•ด ๋™์ผํ•œ ๋‹ต์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ•์ 

JWT ์•ก์„ธ์Šค ํ† ํฐ์€ ๊ฒ€์ฆ์ด ๋น ๋ฅด๊ณ  API ํ˜ธ์ถœ ๊ฐ„์— ์ „๋‹ฌํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ํ”„๋ŸฐํŠธ์—”๋“œ๊ฐ€ ๋งŽ์€ ์—”๋“œํฌ์ธํŠธ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์งง์€ ์ˆ˜๋ช…์˜ ์•ก์„ธ์Šค ํ† ํฐ์€ ํ๋ฆ„์„ ๋‹จ์ˆœํ•˜๊ฒŒ ์œ ์ง€ํ•ด ์ค๋‹ˆ๋‹ค: ์„œ๋ช…์„ ๊ฒ€์ฆํ•˜๊ณ  ์‚ฌ์šฉ์ž ID๋ฅผ ์ฝ๊ณ  ๊ณ„์† ์ง„ํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ: ๊ณ ๊ฐ ํฌํ„ธ์ด "์†ก์žฅ ๋ชฉ๋ก ๋ณด๊ธฐ"์™€ "ํ”„๋กœํ•„ ์—…๋ฐ์ดํŠธ"๋ฅผ ๋ณ„๋„ ์„œ๋น„์Šค์— ์š”์ฒญํ•œ๋‹ค๊ณ  ํ•ฉ์‹œ๋‹ค. JWT๋Š” ๊ณ ๊ฐ ID์™€ customer ๊ฐ™์€ ์—ญํ• ์„ ๋‹ด์•„ ๊ฐ ์„œ๋น„์Šค๊ฐ€ ์„ธ์…˜ ์กฐํšŒ ์—†์ด ์š”์ฒญ์„ ๊ถŒํ•œ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

์œ„ํ—˜ํ•œ ๋ถ€๋ถ„

๊ฐ€์žฅ ํฐ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋Š” ๋ฌดํšจํ™”(revocation)์ž…๋‹ˆ๋‹ค. ํ† ํฐ์ด 1์‹œ๊ฐ„ ๋™์•ˆ ์œ ํšจํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ "๋กœ๊ทธ์•„์›ƒ"์„ ๋ˆŒ๋ €๊ฑฐ๋‚˜ ๊ด€๋ฆฌ์ž๊ฐ€ ๊ณ„์ •์„ ๋น„ํ™œ์„ฑํ™”ํ•ด๋„, ์„œ๋ฒ„์— ์ถ”๊ฐ€์ ์ธ ๊ฒ€์‚ฌ ์—†์ด ๊ทธ 1์‹œ๊ฐ„ ๋™์•ˆ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์–ด๋””์—์„œ๋‚˜ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ์ถ”๊ฐ€์ ์ธ ์„œ๋ฒ„ ์ธก ์ฒดํฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

JWT๋Š” ํ”ํ•œ ๋ฐฉ์‹์œผ๋กœ ์œ ์ถœ๋ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ์‹คํŒจ ์ง€์ ์œผ๋กœ๋Š” localStorage( XSS๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ์Œ), ๋ธŒ๋ผ์šฐ์ € ๋ฉ”๋ชจ๋ฆฌ(์•…์„ฑ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ), ๋กœ๊ทธ์™€ ์—๋Ÿฌ ๋ฆฌํฌํŠธ, ํ—ค๋”๋ฅผ ์บก์ฒ˜ํ•˜๋Š” ํ”„๋ก์‹œ๋‚˜ ๋ถ„์„ ๋„๊ตฌ, ์ง€์› ์ฑ„ํŒ…์ด๋‚˜ ์Šคํฌ๋ฆฐ์ƒท์— ๋ณต์‚ฌ๋œ ํ† ํฐ ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋•Œ๋ฌธ์— JWT ์•ก์„ธ์Šค ํ† ํฐ์€ "์˜๊ตฌ ๋กœ๊ทธ์ธ"์šฉ์ด ์•„๋‹ˆ๋ผ ๋‹จ๊ธฐ๊ฐ„ ์ ‘๊ทผ์šฉ์œผ๋กœ ๋” ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ํ† ํฐ ์•ˆ์— ๋ฏผ๊ฐํ•œ ๊ฐœ์ธ ์ •๋ณด๋ฅผ ๋„ฃ์ง€ ๋ง๊ณ , ๋งŒ๋ฃŒ ์‹œ๊ฐ„์„ ์งง๊ฒŒ ์œ ์ง€ํ•˜๊ณ , ํƒˆ์ทจ๋œ ํ† ํฐ์€ ๋งŒ๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์œ ํšจํ•˜๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์„ธ์š”.

๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ: JWT ๊ตฌ์„ฑ์œผ๋กœ ์‹ค๋ฌด ๊ฐ€๋Šฅํ•œ ์‹œ์Šคํ…œ ๋งŒ๋“ค๊ธฐ

Add mobile sign-in too
Build native iOS and Android apps that share the same auth rules.
Build Mobile

JWT ์•ก์„ธ์Šค ํ† ํฐ์€ ์งง๊ฒŒ ์“ฐ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์•ˆ์ „์—๋Š” ์ข‹์ง€๋งŒ ํ˜„์‹ค์  ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ต๋‹ˆ๋‹ค: ์‚ฌ์šฉ์ž๊ฐ€ ๋ช‡ ๋ถ„๋งˆ๋‹ค ๋‹ค์‹œ ๋กœ๊ทธ์ธํ•ด์•ผ ํ•˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์€ ์•ก์„ธ์Šค ํ† ํฐ์ด ๋งŒ๋ฃŒ๋์„ ๋•Œ ์•ฑ์ด ์กฐ์šฉํžˆ ์ƒˆ ์•ก์„ธ์Šค ํ† ํฐ์„ ๋ฐ›๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์„ ์–ด๋””์— ์ €์žฅํ•˜๋А๋ƒ๋Š” ์•ก์„ธ์Šค ํ† ํฐ๋ณด๋‹ค ๋” ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ฐ˜ ์›น ์•ฑ์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ HttpOnly, Secure ์ฟ ํ‚ค์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์•ˆ์ „ํ•œ ์„ ํƒ์ž…๋‹ˆ๋‹ค. ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€๋Š” ๊ตฌํ˜„์ด ์‰ฝ์ง€๋งŒ XSS ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ํ›”์น˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ์œ„ํ˜‘ ๋ชจ๋ธ์— XSS๊ฐ€ ํฌํ•จ๋œ๋‹ค๋ฉด ์žฅ๊ธฐ์  ๋น„๋ฐ€์„ JavaScript๊ฐ€ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์ €์žฅ์†Œ์— ๋‘์ง€ ๋งˆ์„ธ์š”.

ํšŒ์ „(rotation)์€ ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์„ ์‹ค๋ฌด์—์„œ ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. ๋ช‡ ์ฃผ ๋™์•ˆ ๊ฐ™์€ ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์„ ์“ฐ๋Š” ๋Œ€์‹ , ์‚ฌ์šฉํ•  ๋•Œ๋งˆ๋‹ค ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค: ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ A๋ฅผ ์ œ์‹œํ•˜๋ฉด ์„œ๋ฒ„๋Š” ์ƒˆ ์•ก์„ธ์Šค ํ† ํฐ๊ณผ ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ B๋ฅผ ๋ฐœ๊ธ‰ํ•˜๊ณ  A๋Š” ๋ฌดํšจํ™”๋ฉ๋‹ˆ๋‹ค.

๋‹จ์ˆœํ•œ ํšŒ์ „ ์„ค์ •์€ ๋ณดํ†ต ๋ช‡ ๊ฐ€์ง€ ๊ทœ์น™์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค:

  • ์•ก์„ธ์Šค ํ† ํฐ์€ ์งง๊ฒŒ ์œ ์ง€(๋ถ„ ๋‹จ์œ„, ์‹œ๊ฐ„ ๋‹จ์œ„ ์•„๋‹˜).
  • ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์€ ์„œ๋ฒ„ ์ธก์— ์ƒํƒœ์™€ ๋งˆ์ง€๋ง‰ ์‚ฌ์šฉ ์‹œ๊ฐ„์„ ์ €์žฅ.
  • ๋ฆฌํ”„๋ ˆ์‹œ ์‹œ๋งˆ๋‹ค ํšŒ์ „ํ•˜๊ณ  ์ด์ „ ํ† ํฐ์„ ๋ฌดํšจํ™”.
  • ๊ฐ€๋Šฅํ•˜๋ฉด ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์„ ๊ธฐ๊ธฐ๋‚˜ ๋ธŒ๋ผ์šฐ์ €์— ๋ฐ”์ธ๋”ฉ.
  • ๋‚จ์šฉ ์กฐ์‚ฌ๋ฅผ ์œ„ํ•ด ๋ฆฌํ”„๋ ˆ์‹œ ์ด๋ฒคํŠธ๋ฅผ ๋กœ๊น….

์žฌ์‚ฌ์šฉ ํƒ์ง€๋Š” ํ•ต์‹ฌ ๊ฒฝ๋ณด์ž…๋‹ˆ๋‹ค. ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ A๊ฐ€ ์ด๋ฏธ ๊ตํ™˜๋˜์—ˆ๋Š”๋ฐ ๋‚˜์ค‘์— ๋‹ค์‹œ ๋ณด์ด๋ฉด ๋ณต์‚ฌ๋œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•˜์„ธ์š”. ์ผ๋ฐ˜์ ์ธ ๋Œ€์‘์€ ์„ธ์…˜ ์ „์ฒด(๋Œ€๊ฐœ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ๋ชจ๋“  ์„ธ์…˜)๋ฅผ ํ๊ธฐํ•˜๊ณ  ์ƒˆ๋กœ ๋กœ๊ทธ์ธํ•˜๋„๋ก ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ์‚ฌ๋ณธ์ด ์‹ค์ œ์ธ์ง€ ์•Œ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋กœ๊ทธ์•„์›ƒ์— ๊ด€ํ•ด์„œ๋Š” ์„œ๋ฒ„๊ฐ€ ์‹œํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌด์–ธ๊ฐ€๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์„ ๋ฌดํšจ๋กœ ํ‘œ์‹œํ•˜๋Š” ์„ธ์…˜ ํ…Œ์ด๋ธ”(๋˜๋Š” ํ๊ธฐ ๋ชฉ๋ก)์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์•ก์„ธ์Šค ํ† ํฐ์€ ๋งŒ๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ณ„์† ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์•ก์„ธ์Šค ํ† ํฐ ์ˆ˜๋ช…์„ ์งง๊ฒŒ ์œ ์ง€ํ•˜๋ฉด ๊ทธ ์ฐฝ์„ ์ž‘๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋กœ๊ทธ์•„์›ƒ ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ์‹ค์ œ๋กœ ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ

๋กœ๊ทธ์•„์›ƒ์€ ์ •์˜ํ•˜๊ธฐ ์ „๊นŒ์ง€ ๊ฐ„๋‹จํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. ๋ณดํ†ต ๋‘ ๊ฐ€์ง€ ์š”์ฒญ์ด ์„ž์ž…๋‹ˆ๋‹ค: "์ด ๊ธฐ๊ธฐ์—์„œ ๋กœ๊ทธ์•„์›ƒ"(ํ•œ ๋ธŒ๋ผ์šฐ์ €๋‚˜ ํœด๋Œ€ํฐ)๊ณผ "๋ชจ๋“  ๊ธฐ๊ธฐ์—์„œ ๋กœ๊ทธ์•„์›ƒ"(๋ชจ๋“  ํ™œ์„ฑ ์„ธ์…˜).

ํƒ€์ด๋ฐ ๋ฌธ์ œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. "์ฆ‰์‹œ ๋กœ๊ทธ์•„์›ƒ"์€ ์•ฑ์ด ์ง€๊ธˆ ๋ฐ”๋กœ ์ž๊ฒฉ ์ฆ๋ช…์„ ๋ฐ›์•„๋“ค์ด์ง€ ์•Š๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. "๋งŒ๋ฃŒ ํ›„ ๋กœ๊ทธ์•„์›ƒ"์€ ํ˜„์žฌ ์„ธ์…˜์ด๋‚˜ ํ† ํฐ์ด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋งŒ๋ฃŒ๋  ๋•Œ ๋ฐ›์•„๋“ค์ด์ง€ ์•Š๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ฟ ํ‚ค ๊ธฐ๋ฐ˜ ์„ธ์…˜์—์„œ๋Š” ์ฆ‰์‹œ ๋กœ๊ทธ์•„์›ƒ์ด ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ์„ธ์…˜์„ ์†Œ์œ ํ•˜๋ฏ€๋กœ ํด๋ผ์ด์–ธํŠธ์˜ ์ฟ ํ‚ค๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์„œ๋ฒ„ ์ธก ์„ธ์…˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฌดํšจํ™”ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ ์ฟ ํ‚ค ๊ฐ’์„ ๋ฏธ๋ฆฌ ๋ณต์‚ฌํ–ˆ๋‹ค ํ•ด๋„ ์„œ๋ฒ„์˜ ๊ฑฐ๋ถ€๊ฐ€ ์‹ค์ œ๋กœ ๋กœ๊ทธ์•„์›ƒ์„ ๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค.

JWT ์ „์šฉ ์ธ์ฆ(์ƒํƒœ ์—†๋Š” ์•ก์„ธ์Šค ํ† ํฐ๋งŒ ์žˆ๊ณ  ์„œ๋ฒ„ ์กฐํšŒ๊ฐ€ ์ „ํ˜€ ์—†๋Š” ๊ฒฝ์šฐ)์—์„œ๋Š” ์ง„์ •ํ•œ ์ฆ‰์‹œ ๋กœ๊ทธ์•„์›ƒ์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํƒˆ์ทจ๋œ JWT๋Š” ๋งŒ๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์œ ํšจํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๊ฐ€ "์ด ํ† ํฐ์ด ๋ฌดํšจํ™”๋˜์—ˆ๋Š”๊ฐ€?"๋ฅผ ํ™•์ธํ•  ๊ณณ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ(denylist)๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ทธ๋Ÿฌ๋ฉด ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ํ™•์ธํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์›๋ž˜์˜ ๋‹จ์ˆœ์„ฑ์ด ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

ํ˜„์‹ค์ ์ธ ํŒจํ„ด์€ ์•ก์„ธ์Šค ํ† ํฐ์„ ์งง๊ฒŒ ์œ ์ง€ํ•˜๊ณ  ๋กœ๊ทธ์•„์›ƒ์„ ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์œผ๋กœ ๊ฐ•์ œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•ก์„ธ์Šค ํ† ํฐ์€ ๋ช‡ ๋ถ„ ๋™์•ˆ ํ—ˆ์šฉ๋˜์ง€๋งŒ ์„ธ์…˜์„ ์œ ์ง€์‹œํ‚ค๋Š” ๊ฒƒ์€ ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์ž…๋‹ˆ๋‹ค. ๋…ธํŠธ๋ถ์ด ๋„๋‚œ๋‹นํ•˜๋ฉด ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ ํŒจ๋ฐ€๋ฆฌ๋ฅผ ๋ฌดํšจํ™”ํ•˜๋ฉด ํ–ฅํ›„ ์ ‘๊ทผ์„ ๋น ๋ฅด๊ฒŒ ๋Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž์—๊ฒŒ ํ˜„์‹ค์ ์œผ๋กœ ์•ฝ์†ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋“ค:

  • ์ด ๊ธฐ๊ธฐ์—์„œ ๋กœ๊ทธ์•„์›ƒ: ํ•ด๋‹น ์„ธ์…˜ ๋˜๋Š” ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์„ ํ๊ธฐํ•˜๊ณ  ๋กœ์ปฌ ์ฟ ํ‚ค๋‚˜ ์ €์žฅ์†Œ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ๊ธฐ๊ธฐ์—์„œ ๋กœ๊ทธ์•„์›ƒ: ํ•ด๋‹น ๊ณ„์ •์˜ ๋ชจ๋“  ์„ธ์…˜ ๋˜๋Š” ๋ชจ๋“  ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ ํŒจ๋ฐ€๋ฆฌ๋ฅผ ํ๊ธฐํ•ฉ๋‹ˆ๋‹ค.
  • "์ฆ‰์‹œ" ํšจ๊ณผ: ์„œ๋ฒ„ ์„ธ์…˜์—์„œ๋Š” ๋ณด์žฅ๋˜๋ฉฐ, ์•ก์„ธ์Šค ํ† ํฐ์—์„œ๋Š” ๋งŒ๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์ตœ์„ ์˜ ๋…ธ๋ ฅ์„ ํ•˜๋Š” ์ˆ˜์ค€์ž…๋‹ˆ๋‹ค.
  • ๊ฐ•์ œ ๋กœ๊ทธ์•„์›ƒ ์ด๋ฒคํŠธ: ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ, ๊ณ„์ • ๋น„ํ™œ์„ฑํ™”, ์—ญํ•  ํ•˜ํ–ฅ ์กฐ์ • ๋“ฑ.

๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ์ด๋‚˜ ๊ณ„์ • ๋น„ํ™œ์„ฑํ™” ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” "์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์•„์›ƒํ•  ๊ฒƒ"์— ๊ธฐ๋Œ€์ง€ ๋งˆ์„ธ์š”. ๊ณ„์ • ๋‹จ์œ„์˜ ์„ธ์…˜ ๋ฒ„์ „(๋˜๋Š” โ€˜token valid afterโ€™ ํƒ€์ž„์Šคํƒฌํ”„)์„ ์ €์žฅํ•˜์„ธ์š”. ๊ฐ ๋ฆฌํ”„๋ ˆ์‹œ(๊ทธ๋ฆฌ๊ณ  ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ๊ฐ ์š”์ฒญ) ์‹œ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ๊ฐ’์ด ๋ฐ”๋€Œ์—ˆ์œผ๋ฉด ๊ฑฐ๋ถ€ํ•˜๊ณ  ๋‹ค์‹œ ๋กœ๊ทธ์ธํ•˜๋„๋ก ์š”๊ตฌํ•˜์„ธ์š”.

๋‹จ๊ณ„๋ณ„: ์•ฑ์— ๋งž๋Š” ์„ธ์…˜ ๋ฐฉ์‹ ์„ ํƒํ•˜๊ธฐ

Make forced logout enforceable
Keep staff access under control with session revocation rules you can enforce.
Get Started

์„ธ์…˜ ์„ค๊ณ„๋ฅผ ๋‹จ์ˆœํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋ ค๋ฉด ๋จผ์ € ๊ทœ์น™์„ ์ •ํ•˜๊ณ  ๊ทธ๋‹ค์Œ์— ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์„ ํƒํ•˜์„ธ์š”. ๋Œ€๋ถ€๋ถ„์˜ ๋ฌธ์ œ๋Š” ํŒ€์ด ์œ ํ–‰์ด๋ผ์„œ JWT๋‚˜ ์ฟ ํ‚ค๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒฝ์šฐ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์œ„ํ—˜๊ณผ ๋กœ๊ทธ์•„์›ƒ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋งž๋Š” ์„ ํƒ์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋จผ์ € ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธํ•˜๋Š” ๋ชจ๋“  ์žฅ์†Œ๋ฅผ ๋ชฉ๋กํ™”ํ•˜์„ธ์š”. ๋ธŒ๋ผ์šฐ์ € ์•ฑ์€ ๋„ค์ดํ‹ฐ๋ธŒ ๋ชจ๋ฐ”์ผ ์•ฑ, ๋‚ด๋ถ€ ๊ด€๋ฆฌ์ž ๋„๊ตฌ, ํŒŒํŠธ๋„ˆ ํ†ตํ•ฉ๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ๊ฐ์€ ์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹, ๋กœ๊ทธ์ธ ๊ฐฑ์‹  ๋ฐฉ๋ฒ•, ๋กœ๊ทธ์•„์›ƒ์˜ ์˜๋ฏธ๋ฅผ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„ ํŒ€์— ์œ ํšจํ•œ ์‹ค์šฉ์  ์ˆœ์„œ:

  1. ํด๋ผ์ด์–ธํŠธ ๋ชฉ๋ก ์ž‘์„ฑ: ์›น, iOS/Android, ๋‚ด๋ถ€ ๋„๊ตฌ, ์ œ3์ž ์•ก์„ธ์Šค.
  2. ๊ธฐ๋ณธ ์œ„ํ˜‘ ๋ชจ๋ธ ์„ ํƒ: XSS, CSRF, ๋„๋‚œ ๊ธฐ๊ธฐ ๋“ฑ.
  3. ๋กœ๊ทธ์•„์›ƒ์ด ๋ฌด์—‡์„ ๋ณด์žฅํ•ด์•ผ ํ•˜๋Š”์ง€ ๊ฒฐ์ •: ์ด ๊ธฐ๊ธฐ, ๋ชจ๋“  ๊ธฐ๊ธฐ, ๊ด€๋ฆฌ์ž ๊ฐ•์ œ ๋กœ๊ทธ์•„์›ƒ ๋“ฑ.
  4. ๊ธฐ๋ณธ ํŒจํ„ด ์„ ํƒ: ์ฟ ํ‚ค ๊ธฐ๋ฐ˜ ์„ธ์…˜(์„œ๋ฒ„๊ฐ€ ๊ธฐ์–ต) ๋˜๋Š” ์•ก์„ธ์Šค ํ† ํฐ + ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ.
  5. ํƒ€์ž„์•„์›ƒ๊ณผ ๋Œ€์‘ ๊ทœ์น™ ์„ค์ •: ์œ ํœด ๋Œ€ ์ ˆ๋Œ€ ๋งŒ๋ฃŒ, ์˜์‹ฌ์Šค๋Ÿฌ์šด ์žฌ์‚ฌ์šฉ ์‹œ ์กฐ์น˜.

๊ทธ๋‹ค์Œ ์‹œ์Šคํ…œ์ด ์‹ค์ œ๋กœ ์–ด๋–ค ์•ฝ์†์„ ํ•˜๋Š”์ง€ ๋ฌธ์„œํ™”ํ•˜์„ธ์š”. ์˜ˆ: "์›น ์„ธ์…˜์€ ์œ ํœด 30๋ถ„ ๋˜๋Š” ์ ˆ๋Œ€ 7์ผ ํ›„ ๋งŒ๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ๊ด€๋ฆฌ์ž๋Š” 60์ดˆ ์ด๋‚ด์— ๊ฐ•์ œ ๋กœ๊ทธ์•„์›ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถ„์‹ค ์ „ํ™”๊ธฐ๋Š” ์›๊ฒฉ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." ์ด๋Ÿฐ ๋ฌธ์žฅ๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ณด๋‹ค ๋” ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ํŒจํ„ด์— ๋งž๋Š” ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”. ํ† ํฐ ๊ธฐ๋ฐ˜ ์„ค์ •์—์„œ๋Š” ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ ์žฌ์‚ฌ์šฉ ํƒ์ง€๊ฐ€ ๊ฐ•๋ ฅํ•œ ์‹ ํ˜ธ์ž…๋‹ˆ๋‹ค(๊ฐ™์€ ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์ด ๋‘ ๋ฒˆ ์‚ฌ์šฉ๋จ). ์ด๋ฅผ ํƒˆ์ทจ๋กœ ๊ฐ„์ฃผํ•˜๊ณ  ์„ธ์…˜ ํŒจ๋ฐ€๋ฆฌ๋ฅผ ํ๊ธฐํ•˜๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ์•Œ๋ฆฌ์„ธ์š”.

๊ณ„์ • ํƒˆ์ทจ๋กœ ์ด์–ด์ง€๋Š” ํ”ํ•œ ์‹ค์ˆ˜๋“ค

Build auth the right way
Create a backend with login flows you can control across web and mobile.
Try AppMaster

๋Œ€๋ถ€๋ถ„์˜ ๊ณ„์ • ํƒˆ์ทจ๋Š” "์˜๋ฆฌํ•œ ํ•ดํ‚น"์ด ์•„๋‹™๋‹ˆ๋‹ค. ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์„ธ์…˜ ์‹ค์ˆ˜์—์„œ ์˜ค๋Š” ๋‹จ์ˆœํ•œ ์„ฑ๊ณต ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค. ์ข‹์€ ์„ธ์…˜ ์ฒ˜๋ฆฌ๋Š” ๊ณต๊ฒฉ์ž์—๊ฒŒ ์ž๊ฒฉ ์ฆ๋ช…์„ ํ›”์น˜๊ฑฐ๋‚˜ ์žฌ์‚ฌ์šฉํ•  ์‰ฌ์šด ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ”ํ•œ ํ•จ์ • ์ค‘ ํ•˜๋‚˜๋Š” ์•ก์„ธ์Šค ํ† ํฐ์„ localStorage์— ๋„ฃ๊ณ  XSS๊ฐ€ ์—†๊ธฐ๋ฅผ ๋ฐ”๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŽ˜์ด์ง€์—์„œ ์–ด๋–ค ์Šคํฌ๋ฆฝํŠธ๋“ (๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ์˜์กด์„ฑ, ์ฃผ์ž…๋œ ์œ„์ ฏ, ์ €์žฅ๋œ ๋Œ“๊ธ€ ๋“ฑ) ์‹คํ–‰๋˜๋ฉด localStorage๋ฅผ ์ฝ์–ด ํ† ํฐ์„ ๋ฐ–์œผ๋กœ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. HttpOnly ํ”Œ๋ž˜๊ทธ๋ฅผ ์ผ  ์ฟ ํ‚ค๋Š” JavaScript๊ฐ€ ์ฝ์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ์œ„ํ—˜์„ ์ค„์—ฌ์ค๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ํ•จ์ •์€ ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ ์—†์ด JWT๋ฅผ ์žฅ๊ธฐ๊ฐ„ ์‚ฌ์šฉํ•ด ๋ฆฌํ”„๋ ˆ์‹œ๋ฅผ ํ”ผํ•˜๋ ค๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค. 7์ผ์งœ๋ฆฌ ์•ก์„ธ์Šค ํ† ํฐ์€ 7์ผ ๋™์•ˆ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์ฐฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์งง์€ ์•ก์„ธ์Šค ํ† ํฐ๊ณผ ์ž˜ ๊ด€๋ฆฌ๋œ ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ ์กฐํ•ฉ์ด ๋” ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ๋ฆฌํ”„๋ ˆ์‹œ๋ฅผ ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ์„ ๋•Œ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

์ฟ ํ‚ค๋Š” ๋˜ ๋‹ค๋ฅธ ์‹ค์ˆ˜ ํ•จ์ •์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค: CSRF ๋ฐฉ์–ด๋ฅผ ์žŠ๋Š” ๊ฒƒ. ์ฟ ํ‚ค ์„ธ์…˜์„ ์‚ฌ์šฉํ•˜๊ณ  ์ƒํƒœ ๋ณ€๊ฒฝ ์š”์ฒญ์„ CSRF ๋ฐฉ์–ด ์—†์ด ๋ฐ›์œผ๋ฉด ์•…์„ฑ ์‚ฌ์ดํŠธ๊ฐ€ ๋กœ๊ทธ์ธ๋œ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์†์—ฌ ์ •์ƒ ์š”์ฒญ์„ ๋ณด๋‚ด๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ๊ฑด ์กฐ์‚ฌ์—์„œ ์ž์ฃผ ๋ณด์ด๋Š” ๋‹ค๋ฅธ ์‹ค์ˆ˜๋“ค:

  • ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์ด ์ „ํ˜€ ํšŒ์ „ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜, ํšŒ์ „์€ ๋˜์ง€๋งŒ ์žฌ์‚ฌ์šฉ์„ ํƒ์ง€ํ•˜์ง€ ๋ชปํ•จ.
  • ์—ฌ๋Ÿฌ ๋กœ๊ทธ์ธ ๋ฐฉ๋ฒ•(์ฟ ํ‚ค ์„ธ์…˜๊ณผ ๋ฒ ์–ด๋Ÿฌ ํ† ํฐ)์„ ์ง€์›ํ•˜๋Š”๋ฐ ์„œ๋ฒ„์˜ "์–ด๋А ๊ฒƒ์ด ์šฐ์„ ์ธ์ง€" ๊ทœ์น™์ด ๋ถˆ๋ช…ํ™•ํ•จ.
  • ํ† ํฐ์ด ๋กœ๊ทธ(๋ธŒ๋ผ์šฐ์ € ์ฝ˜์†”, ๋ถ„์„ ์ด๋ฒคํŠธ, ์„œ๋ฒ„ ์š”์ฒญ ๋กœ๊ทธ)์— ๋‚จ์•„ ๋ณต์‚ฌ๋˜๊ณ  ๋ณด์กด๋จ.

๊ตฌ์ฒด์  ์˜ˆ: ์ง€์› ๋‹ด๋‹น์ž๊ฐ€ "๋””๋ฒ„๊ทธ ๋กœ๊ทธ"๋ฅผ ํ‹ฐ์ผ“์— ๋ถ™์—ฌ๋„ฃ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ์— Authorization ํ—ค๋”๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋ฉด ํ‹ฐ์ผ“ ์ ‘๊ทผ ๊ถŒํ•œ์ด ์žˆ๋Š” ๋ˆ„๊ตฌ๋‚˜ ๊ทธ ํ† ํฐ์„ ์žฌ์ƒํ•ด ๋‹ด๋‹น์ž์ฒ˜๋Ÿผ ํ–‰๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ† ํฐ์„ ๋น„๋ฐ€๋ฒˆํ˜ธ์ฒ˜๋Ÿผ ๋‹ค๋ฃจ์„ธ์š”: ์ถœ๋ ฅํ•˜์ง€ ๋ง๊ณ , ์ €์žฅํ•˜์ง€ ๋ง๊ณ , ์งง๊ฒŒ ์œ ์ง€ํ•˜์„ธ์š”.

๋ฐฐํฌ ์ „์— ๋น ๋ฅด๊ฒŒ ์ ๊ฒ€ํ•  ์‚ฌํ•ญ

๋Œ€๋ถ€๋ถ„์˜ ์„ธ์…˜ ๋ฒ„๊ทธ๋Š” ํ™”๋ คํ•œ ์•”ํ˜ธํ™” ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ๋ˆ„๋ฝ๋œ ํ”Œ๋ž˜๊ทธ, ๋„ˆ๋ฌด ์˜ค๋ž˜ ์‚ฌ๋Š” ํ† ํฐ, ๋˜๋Š” ์žฌ์ธ์ฆ์ด ํ•„์š”ํ–ˆ๋˜ ํ•˜๋‚˜์˜ ์—”๋“œํฌ์ธํŠธ์—์„œ ์˜ต๋‹ˆ๋‹ค.

๋ฐฐํฌ ์ „์— ํ›”์นœ ์ฟ ํ‚ค๋‚˜ ํ† ํฐ์œผ๋กœ ๊ณต๊ฒฉ์ž๊ฐ€ ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ค‘์‹ฌ์œผ๋กœ ์งง๊ฒŒ ์ ๊ฒ€ํ•˜์„ธ์š”. ์ „์ฒด ์ธ์ฆ ์„ค์ •์„ ๋‹ค์‹œ ์“ฐ์ง€ ์•Š๊ณ ๋„ ๋ณด์•ˆ์„ ๋น ๋ฅด๊ฒŒ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์ถœ์‹œ ์ „ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

์Šคํ…Œ์ด์ง•์—์„œ ์ด ์ ๊ฒ€์„ ํ•˜๊ณ  ํ”„๋กœ๋•์…˜ ์„ค์ •์—์„œ๋„ ๋‹ค์‹œ ํ™•์ธํ•˜์„ธ์š”:

  • ์•ก์„ธ์Šค ํ† ํฐ์„ ์งง๊ฒŒ ์œ ์ง€(๋ถ„ ๋‹จ์œ„)ํ•˜๊ณ , API๊ฐ€ ์‹ค์ œ๋กœ ๋งŒ๋ฃŒ ํ›„ ๊ฑฐ๋ถ€ํ•˜๋Š”์ง€ ํ™•์ธ.
  • ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์„ ๋น„๋ฐ€๋ฒˆํ˜ธ์ฒ˜๋Ÿผ ๋‹ค๋ฃจ๊ธฐ: ๊ฐ€๋Šฅํ•˜๋ฉด JavaScript๊ฐ€ ์ฝ์„ ์ˆ˜ ์—†๋Š” ๊ณณ์— ์ €์žฅ, ๋ฆฌํ”„๋ ˆ์‹œ ์—”๋“œํฌ์ธํŠธ๋กœ๋งŒ ์ „์†ก, ์‚ฌ์šฉ ํ›„ ํšŒ์ „.
  • ์ฟ ํ‚ค๋ฅผ ์ธ์ฆ์— ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ํ”Œ๋ž˜๊ทธ ํ™•์ธ: HttpOnly ์ผœ์ง, Secure ์ผœ์ง, SameSite ์˜๋„์ ์œผ๋กœ ์„ค์ •. ์ฟ ํ‚ค ๋ฒ”์œ„(domain๊ณผ path)๊ฐ€ ํ•„์š” ์ด์ƒ์œผ๋กœ ๋„“์ง€ ์•Š์€์ง€๋„ ํ™•์ธ.
  • ์ฟ ํ‚ค๋กœ ์ธ์ฆํ•˜๋Š” ์š”์ฒญ์˜ ๊ฒฝ์šฐ CSRF ๋ฐฉ์–ด ์ถ”๊ฐ€ํ•˜๊ณ  ์ƒํƒœ ๋ณ€๊ฒฝ ์—”๋“œํฌ์ธํŠธ๊ฐ€ CSRF ์‹ ํ˜ธ ์—†์ด ์‹คํŒจํ•˜๋Š”์ง€ ํ™•์ธ.
  • ํ๊ธฐ๊ฐ€ ์‹ค์งˆ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธ: ๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์„ค์ •์ด๋‚˜ ๊ณ„์ • ๋น„ํ™œ์„ฑํ™” ํ›„ ๊ธฐ์กด ์„ธ์…˜์ด ๋น ๋ฅด๊ฒŒ ์ž‘๋™ ์ค‘๋‹จ๋˜๋Š”์ง€(์„œ๋ฒ„ ์„ธ์…˜ ์‚ญ์ œ, ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ ๋ฌดํšจํ™”, ๋˜๋Š” "์„ธ์…˜ ๋ฒ„์ „" ์ฒดํฌ).

๊ทธ๋‹ค์Œ ๋กœ๊ทธ์•„์›ƒ ์•ฝ์†์„ ํ…Œ์ŠคํŠธํ•˜์„ธ์š”. "๋กœ๊ทธ์•„์›ƒ"์€ ์ข…์ข… "๋กœ์ปฌ ์„ธ์…˜ ์ œ๊ฑฐ"๋ฅผ ์˜๋ฏธํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž๋Š” ๋” ๋งŽ์€ ๊ฒƒ์„ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

์‹ค์šฉ์  ํ…Œ์ŠคํŠธ: ๋…ธํŠธ๋ถ๊ณผ ํœด๋Œ€ํฐ์—์„œ ๋กœ๊ทธ์ธํ•œ ๋’ค ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•˜์„ธ์š”. ๋…ธํŠธ๋ถ์€ ๋‹ค์Œ ์š”์ฒญ์—์„œ ๊ฐ•์ œ๋กœ ๋กœ๊ทธ์•„์›ƒ๋˜์–ด์•ผ์ง€ ๋ช‡ ์‹œ๊ฐ„ ํ›„๊ฐ€ ๋˜์–ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. "๋ชจ๋“  ๊ธฐ๊ธฐ์—์„œ ๋กœ๊ทธ์•„์›ƒ"๊ณผ ๊ธฐ๊ธฐ ๋ชฉ๋ก์„ ์ œ๊ณตํ•œ๋‹ค๋ฉด ๊ฐ ๊ธฐ๊ธฐ๊ฐ€ ์ทจ์†Œํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ„๊ฐœ์˜ ์„ธ์…˜ ๋˜๋Š” ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ ๋ ˆ์ฝ”๋“œ์— ๋งคํ•‘๋˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

์˜ˆ์‹œ: ์ง์› ๊ณ„์ •๊ณผ ๊ฐ•์ œ ๋กœ๊ทธ์•„์›ƒ์ด ํ•„์š”ํ•œ ๊ณ ๊ฐ ํฌํ„ธ

Prototype cookie sessions fast
Set up secure cookies and server validation without writing boilerplate code.
Start Building

์ž‘์€ ๊ธฐ์—…์„ ์ƒ์ƒํ•ด ๋ณด์„ธ์š”. ์›น ๊ณ ๊ฐ ํฌํ„ธ(๊ณ ๊ฐ์ด ์†ก์žฅ ํ™•์ธ, ํ‹ฐ์ผ“ ์—ด๊ธฐ)๊ณผ ํ˜„์žฅ ์ง์›์šฉ ๋ชจ๋ฐ”์ผ ์•ฑ(์ž‘์—…, ๋ฉ”๋ชจ, ์‚ฌ์ง„)์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ง์›๋“ค์€ ๋•Œ๋•Œ๋กœ ์‹ ํ˜ธ๊ฐ€ ์—†๋Š” ์ง€ํ•˜์—์„œ ์ผํ•˜๋ฏ€๋กœ ์•ฑ์€ ์–ด๋А ์ •๋„ ์˜คํ”„๋ผ์ธ ์ƒํƒœ์—์„œ๋„ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ด€๋ฆฌ์ž๋“ค์€ ํฐ ๋นจ๊ฐ„ ๋ฒ„ํŠผ์„ ์›ํ•ฉ๋‹ˆ๋‹ค: ํƒœ๋ธ”๋ฆฟ ๋ถ„์‹ค์ด๋‚˜ ๊ณ„์•ฝ์ž ํ‡ด์‚ฌ ์‹œ ๊ฐ•์ œ ๋กœ๊ทธ์•„์›ƒ์„ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ์„ธ ๊ฐ€์ง€ ํ”ํ•œ ์œ„ํ˜‘์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค: ์ฐจ๋Ÿ‰์˜ ๊ณต์œ  ํƒœ๋ธ”๋ฆฟ(๋ˆ„๊ตฐ๊ฐ€ ๋กœ๊ทธ์•„์›ƒ์„ ์žŠ์Œ), ํ”ผ์‹ฑ(์ง์›์ด ๊ฐ€์งœ ํŽ˜์ด์ง€์— ์ž๊ฒฉ ์ฆ๋ช… ์ž…๋ ฅ), ํฌํ„ธ์˜ ๊ฐ€๋” ๋ฐœ์ƒํ•˜๋Š” XSS ๋ฒ„๊ทธ(๋ธŒ๋ผ์šฐ์ €์—์„œ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜์–ด ํ›”์น  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ํ›”์น˜๋ ค ํ•จ).

์—ฌ๊ธฐ์„œ๋Š” ์งง์€ ์ˆ˜๋ช…์˜ ์•ก์„ธ์Šค ํ† ํฐ + ํšŒ์ „ํ•˜๋Š” ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ๊ณผ ์„œ๋ฒ„ ์ธก ํ๊ธฐ๊ฐ€ ์‹ค๋ฌด์ ์œผ๋กœ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๋น ๋ฅธ API ํ˜ธ์ถœ๊ณผ ์˜คํ”„๋ผ์ธ ๋‚ด์„ฑ(off-line tolerance)์„ ์ฃผ๋ฉด์„œ๋„ ๊ด€๋ฆฌ์ž๊ฐ€ ์„ธ์…˜์„ ๋Š์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ์„ฑ ์˜ˆ์‹œ:

  • ์•ก์„ธ์Šค ํ† ํฐ ์ˆ˜๋ช…: 5~15๋ถ„.
  • ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ ํšŒ์ „: ๊ฐฑ์‹ ํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์„ ๋ฐœ๊ธ‰ํ•˜๊ณ  ์ด์ „ ํ† ํฐ์€ ๋ฌดํšจํ™”.
  • ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ ์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅ: ์›น์—์„œ๋Š” HttpOnly, Secure ์ฟ ํ‚ค์—; ๋ชจ๋ฐ”์ผ์—์„œ๋Š” OS์˜ ๋ณด์•ˆ ์ €์žฅ์†Œ์—.
  • ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ ์„œ๋ฒ„ ์ธก ์ถ”์ : ํ† ํฐ ๋ ˆ์ฝ”๋“œ(์‚ฌ์šฉ์ž, ๊ธฐ๊ธฐ, ๋ฐœ๊ธ‰ ์‹œ๊ฐ„, ๋งˆ์ง€๋ง‰ ์‚ฌ์šฉ, ํ๊ธฐ ํ”Œ๋ž˜๊ทธ)๋ฅผ ์ €์žฅ. ํšŒ์ „๋œ ํ† ํฐ์ด ์žฌ์‚ฌ์šฉ๋˜๋ฉด ๋„๋‚œ์œผ๋กœ ๊ฐ„์ฃผํ•˜๊ณ  ์ฒด์ธ์„ ํ๊ธฐ.

๊ฐ•์ œ ๋กœ๊ทธ์•„์›ƒ์€ ์‹œํ–‰ ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค: ๊ด€๋ฆฌ์ž๊ฐ€ ํ•ด๋‹น ๊ธฐ๊ธฐ(๋˜๋Š” ์‚ฌ์šฉ์ž์˜ ๋ชจ๋“  ๊ธฐ๊ธฐ)์— ๋Œ€ํ•œ ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ ๋ ˆ์ฝ”๋“œ๋ฅผ ํ๊ธฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋„๋‚œ๋œ ๊ธฐ๊ธฐ๋Š” ํ˜„์žฌ ์•ก์„ธ์Šค ํ† ํฐ์ด ๋งŒ๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ƒˆ ํ† ํฐ์„ ์–ป์„ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์™„์ „ํ•œ ์ ‘๊ทผ ์ฐจ๋‹จ๊นŒ์ง€์˜ ์ตœ๋Œ€ ์‹œ๊ฐ„์€ ์•ก์„ธ์Šค ํ† ํฐ ์ˆ˜๋ช…์ด ๋ฉ๋‹ˆ๋‹ค.

๋ถ„์‹ค ๊ธฐ๊ธฐ์— ๋Œ€ํ•ด์„œ๋Š” ๊ทœ์น™์„ ํ‰์ดํ•œ ์–ธ์–ด๋กœ ์ •์˜ํ•˜์„ธ์š”: "10๋ถ„ ์ด๋‚ด์— ์•ฑ์ด ๋™๊ธฐํ™”๋ฅผ ์ค‘๋‹จํ•˜๊ณ  ๋‹ค์‹œ ๋กœ๊ทธ์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค." ์˜คํ”„๋ผ์ธ ์ž‘์—…์€ ๊ธฐ๊ธฐ์—์„œ ๋‚จ์•„ ์žˆ์–ด๋„ ๋‹ค์Œ ์˜จ๋ผ์ธ ๋™๊ธฐํ™”๋Š” ๋กœ๊ทธ์ธ์ด ํ•„์š”ํ•  ๋•Œ๊นŒ์ง€ ์‹คํŒจํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„: ๊ตฌํ˜„, ํ…Œ์ŠคํŠธ, ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ธฐ

"๋กœ๊ทธ์•„์›ƒ"์ด ์˜๋ฏธํ•˜๋Š” ๋ฐ”๋ฅผ ์ œํ’ˆ ์–ธ์–ด๋กœ ์ ์–ด๋‘์„ธ์š”. ์˜ˆ: "์ด ๊ธฐ๊ธฐ์—์„œ ๋กœ๊ทธ์•„์›ƒํ•˜๋ฉด ํ•ด๋‹น ๊ธฐ๊ธฐ์—์„œ์˜ ์ ‘๊ทผ์ด ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.", "๋ชจ๋“  ๊ธฐ๊ธฐ์—์„œ ๋กœ๊ทธ์•„์›ƒํ•˜๋ฉด 1๋ถ„ ์ด๋‚ด์— ๋ชจ๋“  ๊ธฐ๊ธฐ๊ฐ€ ๊ฐ•์ œ ๋กœ๊ทธ์•„์›ƒ๋ฉ๋‹ˆ๋‹ค.", "๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ ์‹œ ๋‹ค๋ฅธ ์„ธ์…˜์€ ๋กœ๊ทธ์•„์›ƒ๋ฉ๋‹ˆ๋‹ค." ์ด๋Ÿฐ ์•ฝ์†๋“ค์ด ์„œ๋ฒ„ ์ธก ์„ธ์…˜ ์ƒํƒœ, ํ๊ธฐ ๋ชฉ๋ก, ๋˜๋Š” ์งง์€ ์ˆ˜๋ช… ํ† ํฐ ์ค‘ ๋ฌด์—‡์ด ํ•„์š”ํ•œ์ง€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ ์•ฝ์†๋“ค์„ ์ž‘์€ ํ…Œ์ŠคํŠธ ๊ณ„ํš์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”. ํ† ํฐ๊ณผ ์„ธ์…˜ ๋ฒ„๊ทธ๋Š” ์ •์ƒ ํ๋ฆ„ ๋ฐ๋ชจ์—์„œ๋Š” ์ž˜ ๋ณด์ด์ง€ ์•Š๋‹ค๊ฐ€ ์‹ค์ œ ์ƒํ™ฉ(์ ˆ์ „ ๋ชจ๋“œ, ๋Š๊ธด ๋„คํŠธ์›Œํฌ, ๋‹ค์ค‘ ๊ธฐ๊ธฐ)์—์„œ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

์‹ค์šฉ์  ํ…Œ์ŠคํŠธ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ๊ฒฝ์šฐ๋ฅผ ์ปค๋ฒ„ํ•˜๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”:

  • ๋งŒ๋ฃŒ: ์•ก์„ธ์Šค ํ† ํฐ์ด๋‚˜ ์„ธ์…˜์ด ๋งŒ๋ฃŒ๋˜๋ฉด ์ ‘๊ทผ์ด ์ค‘๋‹จ๋˜๋Š”๊ฐ€?
  • ํ๊ธฐ: "๋ชจ๋“  ๊ธฐ๊ธฐ์—์„œ ๋กœ๊ทธ์•„์›ƒ" ํ›„์— ์ด์ „ ์ž๊ฒฉ ์ฆ๋ช…์ด ๋‹ค์Œ ์š”์ฒญ์—์„œ ์‹คํŒจํ•˜๋Š”๊ฐ€?
  • ํšŒ์ „: ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ ํšŒ์ „์ด ์ƒˆ ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์„ ๋ฐœ๊ธ‰ํ•˜๊ณ  ์ด์ „ ๊ฒƒ์„ ๋ฌดํšจํ™”ํ•˜๋Š”๊ฐ€?
  • ์žฌ์‚ฌ์šฉ ํƒ์ง€: ์˜ค๋ž˜๋œ ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์„ ์žฌ์ƒํ•˜๋ฉด ๋ฝ๋‹ค์šด์ด ๋ฐœ์ƒํ•˜๋Š”๊ฐ€?
  • ๋‹ค์ค‘ ๊ธฐ๊ธฐ: "ํ˜„์žฌ ๊ธฐ๊ธฐ๋งŒ" ๋Œ€ "๋ชจ๋“  ๊ธฐ๊ธฐ" ๊ทœ์น™์ด ๊ฐ•์ œ๋˜๊ณ  UI๊ฐ€ ์ผ์น˜ํ•˜๋Š”๊ฐ€?

ํ…Œ์ŠคํŠธ ํ›„ ํŒ€๊ณผ ํ•จ๊ป˜ ๊ฐ„๋‹จํ•œ ๊ณต๊ฒฉ ๋ฆฌํ—ˆ์„ค์„ ํ•˜์„ธ์š”. ์„ธ ๊ฐ€์ง€ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๊ณจ๋ผ ์ข…๋‹จ๊ฐ„์œผ๋กœ ์ ๊ฒ€ํ•ฉ๋‹ˆ๋‹ค: ํ† ํฐ์„ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” XSS ๋ฒ„๊ทธ, ์ฟ ํ‚ค ์„ธ์…˜์„ ๋…ธ๋ฆฐ CSRF ์‹œ๋„, ํ™œ์„ฑ ์„ธ์…˜์ด ์žˆ๋Š” ๋ถ„์‹ค ์ „ํ™”๊ธฐ. ์„ค๊ณ„๊ฐ€ ์•ฝ์†๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

๋น ๋ฅด๊ฒŒ ์ง„ํ–‰ํ•ด์•ผ ํ•œ๋‹ค๋ฉด ์ปค์Šคํ…€ ์ปค๋„ฅํ„ฐ ์ฝ”๋“œ๋ฅผ ์ค„์ด์„ธ์š”. AppMaster (appmaster.io)์€ ์ƒ์„ฑ๋œ, ์‹ค๋ฌด์šฉ ๋ฐฑ์—”๋“œ์™€ ์›น/๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ์„ ์ œ๊ณตํ•ด ๋งŒ๋ฃŒ, ํšŒ์ „, ๊ฐ•์ œ ๋กœ๊ทธ์•„์›ƒ ๊ฐ™์€ ๊ทœ์น™์„ ํด๋ผ์ด์–ธํŠธ ๊ฐ„์— ์ผ๊ด€๋˜๊ฒŒ ์œ ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ํ•œ ์˜ต์…˜์ž…๋‹ˆ๋‹ค.

์ถœ์‹œ ํ›„ ์ถ”์  ๊ฒ€ํ† ๋ฅผ ์ผ์ •์— ๋„ฃ์œผ์„ธ์š”. ์‹ค์ œ ์ง€์› ํ‹ฐ์ผ“๊ณผ ์‚ฌ๊ณ ๋ฅผ ์‚ฌ์šฉํ•ด ํƒ€์ž„์•„์›ƒ, ์„ธ์…˜ ์ œํ•œ, "๋ชจ๋“  ๊ธฐ๊ธฐ์—์„œ ๋กœ๊ทธ์•„์›ƒ" ๋™์ž‘์„ ์กฐ์ •ํ•˜๊ณ  ๊ฐ™์€ ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•ด ์ˆ˜์ •์ด ์กฐ์šฉํžˆ ํ›„ํ‡ดํ•˜์ง€ ์•Š๋„๋ก ํ•˜์„ธ์š”.

์‰ฌ์šด ์‹œ์ž‘
๋ฉ‹์ง„๋งŒ๋“ค๊ธฐ

๋ฌด๋ฃŒ ์š”๊ธˆ์ œ๋กœ AppMaster๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์„ธ์š”.
์ค€๋น„๊ฐ€ ๋˜๋ฉด ์ ์ ˆํ•œ ๊ตฌ๋…์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๋‹ค
์›น ์•ฑ ์„ธ์…˜ ๊ด€๋ฆฌ: ์ฟ ํ‚ค vs JWT vs ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ | AppMaster