Session Vs Token ๐Ÿ”

Lzhtkยท2025๋…„ 8์›” 3์ผ

๐Ÿ” ์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ๊ณผ ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ์˜ ์ฐจ์ด์ ๊ณผ ๋ณด์•ˆ ๊ณ ๋ ค์‚ฌํ•ญ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž โ—

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

๐Ÿ’ผ ์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ

  • ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉ์ž์˜ ๋กœ๊ทธ์ธ ์ƒํƒœ๋ฅผ ์„ธ์…˜ ๊ฐ์ฒด๋กœ ์ €์žฅํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ๋Š” ์„ธ์…˜ ID๋ฅผ ์ฟ ํ‚ค์— ๋‹ด์•„ ์š”์ฒญํ•  ๋•Œ๋งˆ๋‹ค ์„œ๋ฒ„๋กœ ์ „์†กํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

  • ์ธ์ฆ Flow ๐ŸŒŠ

    • 1๏ธโƒฃ ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ -> ์„œ๋ฒ„์—์„œ ์„ธ์…˜ ์ƒ์„ฑ
    • 2๏ธโƒฃ ์„ธ์…˜ ID๋ฅผ ์ฟ ํ‚ค์— ๋‹ด์•„ ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌ
    • 3๏ธโƒฃ ์ดํ›„ ์š”์ฒญ ์‹œ ์ฟ ํ‚ค๋ฅผ ํ†ตํ•ด ์„ธ์…˜ ID ์ „์†ก -> ์„œ๋ฒ„๊ฐ€ ์„ธ์…˜ ์ •๋ณด ํ™•์ธ
  • ์žฅ์  ๐Ÿ‘

    • ๊ตฌํ˜„์ด ๋น„๊ต์  ๊ฐ„๋‹จํ•˜๊ณ , ์˜ค๋ž˜๋œ ๋ฐฉ์‹์ด๋ฏ€๋กœ ์ž˜ ๊ฐ–์ถฐ์ง„ ์ƒํƒœ๊ณ„๋ฅผ ๊ฐ–์ถค
    • ์„œ๋ฒ„๊ฐ€ ์„ธ์…˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฏ€๋กœ ์ œ์–ด ๋ฐ ๋งŒ๋ฃŒ์ฒ˜๋ฆฌ๊ฐ€ ์šฉ์ดํ•จ.
  • ๋ณด์•ˆ ๊ณ ๋ ค์‚ฌํ•ญ โš 

    • ์„ธ์…˜ ํƒˆ์ทจ : ์ฟ ํ‚ค๋ฅผ ๊ฐ€๋กœ์ฑ„๋ฉด ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์„ธ์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    • CSRF : ์ฟ ํ‚ค๊ฐ€ ์ž๋™ ์ „์†ก๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ทจ์•ฝํ•  ์ˆ˜ ์žˆ์Œ -> CSRF ํ† ํฐ ํ•„์š”
    • ์„œ๋ฒ„ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€๋‹ด : ์„ธ์…˜์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๋ฉด ์„œ๋ฒ„ ๋ถ€ํ•˜๊ฐ€ ์ปค์งˆ ์ˆ˜ ์žˆ์Œ

๐ŸŽซ ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ

  • ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธํ•˜๋ฉด ์„œ๋ฒ„๋Š” ์ธ์ฆ ์ •๋ณด๋ฅผ ๋‹ด์€ JWT( Json Web Token ) ๋“ฑ์˜ ํ† ํฐ์„ ์ƒ์„ฑํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ๋Š” ์ดํ›„ ์š”์ฒญ๋งˆ๋‹ค ํ•ด๋‹น ํ† ํฐ์„ HTTP ํ—ค๋”์— ๋‹ด์•„ ์ „์†กํ•œ๋‹ค.

  • ์ธ์ฆ Flow ๐ŸŒŠ

    • 1๏ธโƒฃ ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ -> ์„œ๋ฒ„๊ฐ€ JWT ํ† ํฐ ๋ฐœ๊ธ‰
    • 2๏ธโƒฃ ํด๋ผ์ด์–ธํŠธ๋Š” ํ† ํฐ์„ ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€๋‚˜ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ
    • 3๏ธโƒฃ ์ดํ›„ ์š”์ฒญ ์‹œ Authorization ํ—ค๋”์— ํ† ํฐ์„ ํฌํ•จํ•˜์—ฌ ์ „์†ก
  • ์žฅ์  ๐Ÿ‘

    • ๋ฌด์ƒํƒœ( Stateless ) : ์„œ๋ฒ„๊ฐ€ ์„ธ์…˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š์•„ ํ™•์žฅ์„ฑ์— ์œ ๋ฆฌ
    • Cross - Origin ์ง€์›์ด ์šฉ์ด : ํ† ํฐ์€ ์ฟ ํ‚ค์— ์˜์กดํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— API ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด๋„ ์ข‹๋‹ค.
    • ๋ชจ๋ฐ”์ผ ์•ฑ๊ณผ์˜ ํ˜ธํ™˜์„ฑ์ด ์ข‹์Œ
  • ๋ณด์•ˆ ๊ณ ๋ ค์‚ฌํ•ญ โš 

    • ํ† ํฐ ํƒˆ์ทจ : ํด๋ผ์ด์–ธํŠธ ์ €์žฅ์†Œ์—์„œ ํƒˆ์ทจ๋  ์œ„ํ—˜์ด ์กด์žฌํ•œ๋‹ค -> XSS ๋ฐฉ์ง€ ํ•„์š”
    • ํ† ํฐ ์œ ํšจ๊ธฐ๊ฐ„ ๊ด€๋ฆฌ : ์œ ํšจ๊ธฐ๊ฐ„์ด ๋„ˆ๋ฌด ๊ธธ๋ฉด ์œ„ํ—˜, ์งง์œผ๋ฉด ์‚ฌ์šฉ์ž ๋ถˆํŽธ -> Refresh ์‚ฌ์šฉ ๊ถŒ์žฅ
    • ์„œ๋ฒ„์—์„œ ํ† ํฐ ๋ฌดํšจํ™” ์–ด๋ ค์›€ : ์„œ๋ฒ„๊ฐ€ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํ† ํฐ์€ ์ฆ‰์‹œ ๋งŒ๋ฃŒ์‹œํ‚ค๊ธฐ ์–ด๋ ต๋‹ค.

    ์ฆ‰, ์„œ๋ฒ„๋Š” ํ•ด๋‹น ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธํ–ˆ๋Š”์ง€๋ฅผ ๊ธฐ์–ตํ•˜์ง€ ์•Š๊ณ , ์š”์ฒญ ํ•˜๋‚˜ํ•˜๋‚˜๊ฐ€ ์Šค์Šค๋กœ ์ธ์ฆ ์ •๋ณด๋ฅผ ์ฆ๋ช…ํ•œ๋‹ค.


๐Ÿ” ์„ธ์…˜ Vs ํ† ํฐ ๋น„๊ตํ‘œ

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

๐Ÿ”’ ์ƒํ™ฉ์— ๋”ฐ๋ฅธ ์ธ์ฆ ๋ฐฉ์‹ ์„ ํƒ

  • ๋‹จ์ผ ์„œ๋ฒ„ + ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ : ์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ์ด ๊ด€๋ฆฌํ•˜๊ธฐ ์šฉ์ด
  • ๋ชจ๋ฐ”์ผ ์•ฑ + REST API or ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜ : ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ์ด ํ™•์žฅ์„ฑ ๋ฉด์—์„œ ์œ ๋ฆฌ

๐Ÿ“ƒ ๋ณด์•ˆ ์ฒดํฌ๋ฆฌ์ŠคํŠธ ์š”์•ฝ

ํ•ญ๋ชฉ์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ
์„ธ์…˜ ํƒˆ์ทจ ๋Œ€์‘HTTPS + Secure ์ฟ ํ‚ค + SameSite ์„ค์ •HTTPS + ์งง์€ ํ† ํฐ ์œ ํšจ๊ธฐ๊ฐ„ + Refresh Token ์‚ฌ์šฉ
CSRF ๋ฐฉ์ง€CSRF ํ† ํฐ + SameSite ์ฟ ํ‚คํ† ํฐ์„ ์ฟ ํ‚ค์— ์ €์žฅํ•˜์ง€ ์•Š์œผ๋ฉด ์˜ํ–ฅ ์ ์Œ
XSS ๋ฐฉ์ง€์ฟ ํ‚ค์˜ httpOnly ์„ค์ •๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€ ์‚ฌ์šฉ ์‹œ XSS ๋ฐฉ์–ด ๊ฐ•ํ™” ํ•„์š”
๋กœ๊ทธ์•„์›ƒ ์ฒ˜๋ฆฌ์„ธ์…˜ ๋ฌดํšจํ™”ํ† ํฐ ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ ๋˜๋Š” ๋งŒ๋ฃŒ ๋Œ€๊ธฐ

๋งˆ๋ฌด๋ฆฌ ๐Ÿ”š

์„ธ์…˜ ๊ธฐ๋ฐ˜๊ณผ ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ์€ ๊ฐ๊ฐ์˜ ์žฅ๋‹จ์ ์ด ์žˆ์œผ๋ฉฐ, ์‚ฌ์šฉํ•˜๋Š” ํ™˜๊ฒฝ๊ณผ ์„œ๋น„์Šค ๊ตฌ์กฐ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ๋ฐฉ์‹์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.
๋ฌด์—‡๋ณด๋‹ค๋„ ๋ณด์•ˆ์— ๋Œ€ํ•œ ๊ณ ๋ ค ์—†์ด ์ธ์ฆ ๋ฐฉ์‹์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์€ ์ข‹์ง€ ๋ชปํ•œ ์„ ํƒ์ด๋ฉฐ, ๊ฐ ๋ฐฉ์‹์— ๋งž๋Š” ์ ์ ˆํ•œ ๋ณด์•ˆ ๋Œ€์ฑ…์„ ์˜ค๋Š˜ ์ตํžŒ ๊ฒƒ์„ ํ† ๋Œ€๋กœ ์„ค๊ณ„ํ•˜๋„๋ก ํ•˜์ž ๐Ÿ’ฏ

0๊ฐœ์˜ ๋Œ“๊ธ€