๐Ÿช ์ฟ ํ‚ค(Cookie)๋ž€ ๋ฌด์—‡์ธ๊ฐ€

0

jwt

๋ชฉ๋ก ๋ณด๊ธฐ
1/4

โœ… 1. ์ฟ ํ‚ค๋ž€?

์ฟ ํ‚ค(Cookie)๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €์— ์ €์žฅ๋˜๋Š” ์ž‘์€ ๋ฐ์ดํ„ฐ ์กฐ๊ฐ์ด๋‹ค.
์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €) ๊ฐ„์— ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.


๐Ÿง  2. ์ฟ ํ‚ค์˜ ๊ธฐ๋ณธ ๊ฐœ๋…

๐Ÿ“Œ 2.1 ์ฟ ํ‚ค์˜ ์—ญํ• 

  • ์„ธ์…˜ ๊ด€๋ฆฌ: ๋กœ๊ทธ์ธ ์ •๋ณด, ์‚ฌ์šฉ์ž ์„ค์ • ๋“ฑ์„ ์ €์žฅ.
  • ๊ฐœ์ธํ™”: ์‚ฌ์šฉ์ž์˜ ์„ ํ˜ธ๋„๋‚˜ ํ…Œ๋งˆ ์„ค์ • ์ €์žฅ.
  • ์ถ”์  ๋ฐ ๋ถ„์„: ์‚ฌ์šฉ์ž์˜ ๋ฐฉ๋ฌธ ๊ธฐ๋ก, ํด๋ฆญ ํŒจํ„ด ๋“ฑ์„ ์ถ”์ .

๐Ÿ“Œ 2.2 ์ฟ ํ‚ค์˜ ๊ตฌ์กฐ

์ฟ ํ‚ค๋Š” ์ด๋ฆ„(name), ๊ฐ’(value), ์†์„ฑ(attributes)์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

Set-Cookie: token=eyJhbGciOiJIUzI1NiIsIn...; HttpOnly; Secure; SameSite=Strict; Path=/; Max-Age=3600
์†์„ฑ์„ค๋ช…
Name์ฟ ํ‚ค์˜ ์ด๋ฆ„ (token)
Value์ฟ ํ‚ค์— ์ €์žฅ๋œ ๊ฐ’ (eyJhbGciOiJIUzI1NiIsIn...)
Domain์ฟ ํ‚ค๊ฐ€ ์ „์†ก๋  ๋„๋ฉ”์ธ (example.com)
Path์ฟ ํ‚ค๊ฐ€ ์ „์†ก๋  ๊ฒฝ๋กœ (/)
Max-Age์ฟ ํ‚ค์˜ ์œ ํšจ ์‹œ๊ฐ„ (์ดˆ ๋‹จ์œ„, 3600 โ†’ 1์‹œ๊ฐ„)
Expires์ฟ ํ‚ค ๋งŒ๋ฃŒ ๋‚ ์งœ (Wed, 21 Oct 2024)
SecureHTTPS๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์ „์†ก
HttpOnlyJavaScript๋กœ ์ ‘๊ทผ ๋ถˆ๊ฐ€
SameSiteCSRF ๊ณต๊ฒฉ ๋ฐฉ์ง€ (Strict, Lax, None)

๐Ÿ”‘ 3. ์ฟ ํ‚ค์˜ ์ข…๋ฅ˜

  • ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ซ์œผ๋ฉด ์‚ฌ๋ผ์ง.
  • Expires๋‚˜ Max-Age ์†์„ฑ์ด ์—†์Œ.
  • ์ฃผ๋กœ ๋กœ๊ทธ์ธ ์„ธ์…˜ ๊ด€๋ฆฌ์— ์‚ฌ์šฉ.
  • ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ซ์•„๋„ ์œ ์ง€๋จ.
  • Expires๋‚˜ Max-Age ์†์„ฑ์ด ์„ค์ •๋จ.
  • ์ฃผ๋กœ ์ž๋™ ๋กœ๊ทธ์ธ, ์‚ฌ์šฉ์ž ์„ค์ • ์ €์žฅ์— ์‚ฌ์šฉ.
  • Secure ์†์„ฑ์ด ์„ค์ •๋จ.
  • HTTPS ํ†ต์‹ ์—์„œ๋งŒ ์ „์†ก๋จ.
  • JavaScript์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Œ.
  • XSS (Cross-Site Scripting) ๊ณต๊ฒฉ ๋ฐฉ์ง€.

๐Ÿ›ก๏ธ 4. ์ฟ ํ‚ค์˜ ์ฃผ์š” ์†์„ฑ

โœ… 4.1 Secure

  • HTTPS ์—ฐ๊ฒฐ์—์„œ๋งŒ ์ฟ ํ‚ค๊ฐ€ ์ „์†ก๋œ๋‹ค.
  • ์ค‘๊ฐ„์ž ๊ณต๊ฒฉ (Man-in-the-Middle, MITM) ๋ฐฉ์ง€.

โœ… 4.2 HttpOnly

  • JavaScript๋ฅผ ํ†ตํ•ด ์ฟ ํ‚ค์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค.
  • XSS (Cross-Site Scripting) ๊ณต๊ฒฉ ๋ฐฉ์ง€.

โœ… 4.3 SameSite

  • CSRF (Cross-Site Request Forgery) ๊ณต๊ฒฉ ๋ฐฉ์ง€.
  • ์˜ต์…˜:
    • Strict: ๋™์ผ ์‚ฌ์ดํŠธ ๋‚ด ์š”์ฒญ๋งŒ ์ฟ ํ‚ค ์ „์†ก.
    • Lax: ๋™์ผ ์‚ฌ์ดํŠธ + ๋งํฌ ํด๋ฆญ ์‹œ ์ฟ ํ‚ค ์ „์†ก.
    • None: ๋ชจ๋“  ์š”์ฒญ์— ์ฟ ํ‚ค ์ „์†ก (๋ฐ˜๋“œ์‹œ Secure ํ•„์š”).

๐ŸŒ 5. ์ฟ ํ‚ค์˜ ๋™์ž‘ ๋ฐฉ์‹

์„œ๋ฒ„๊ฐ€ ์ฟ ํ‚ค๋ฅผ ์„ค์ •ํ•  ๋•Œ ๋ธŒ๋ผ์šฐ์ €์— Set-Cookie ํ—ค๋”๋ฅผ ๋ณด๋‚ธ๋‹ค.

์˜ˆ์‹œ (์„œ๋ฒ„ โ†’ ํด๋ผ์ด์–ธํŠธ):

HTTP/1.1 200 OK
Set-Cookie: sessionId=abc123; HttpOnly; Secure; Path=/; Max-Age=3600

โœ… 5.2 ์ฟ ํ‚ค ์ „์†ก

  • ๋ธŒ๋ผ์šฐ์ €๋Š” ๊ฐ™์€ ๋„๋ฉ”์ธ/๊ฒฝ๋กœ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ์ž๋™์œผ๋กœ ์ฟ ํ‚ค๋ฅผ ํฌํ•จํ•œ๋‹ค.

์˜ˆ์‹œ (ํด๋ผ์ด์–ธํŠธ โ†’ ์„œ๋ฒ„):

GET /dashboard
Cookie: sessionId=abc123

๐Ÿ”„ 6. ์ฟ ํ‚ค์™€ JWT (JSON Web Token)

โœ… 6.1 JWT๋ฅผ ์ฟ ํ‚ค์— ์ €์žฅํ•  ๋•Œ์˜ ์žฅ๋‹จ์ 

๊ตฌ๋ถ„๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€ (LocalStorage)HttpOnly Secure ์ฟ ํ‚ค
XSS ๊ณต๊ฒฉ์ทจ์•ฝ์•ˆ์ „
CSRF ๊ณต๊ฒฉ์•ˆ์ „SameSite๋กœ ๋ฐฉ์–ด
๋ธŒ๋ผ์šฐ์ € ์ ‘๊ทผJavaScript ์ ‘๊ทผ ๊ฐ€๋ŠฅJavaScript ์ ‘๊ทผ ๋ถˆ๊ฐ€
๋ณด์•ˆ ์ˆ˜์ค€๋‚ฎ์Œ๋†’์Œ
์ „์†ก ๋ฐฉ์‹์ˆ˜๋™์œผ๋กœ ํ—ค๋”์— ์ถ”๊ฐ€ ํ•„์š”์ž๋™์œผ๋กœ ์ „์†ก

โœ… 6.2 ์ฟ ํ‚ค vs ์„ธ์…˜

๊ตฌ๋ถ„์ฟ ํ‚ค (Cookie)์„ธ์…˜ (Session)
์ €์žฅ ์œ„์น˜๋ธŒ๋ผ์šฐ์ €์„œ๋ฒ„
๋ณด์•ˆ๋ณด์•ˆ ์ทจ์•ฝ์  ์กด์žฌ์ƒ๋Œ€์ ์œผ๋กœ ์•ˆ์ „
์†๋„๋น ๋ฆ„๋А๋ฆผ
์œ ํšจ์„ฑ์œ ํšจ ์‹œ๊ฐ„ ์„ค์ • ๊ฐ€๋Šฅ๋ธŒ๋ผ์šฐ์ € ์ข…๋ฃŒ ์‹œ ๋งŒ๋ฃŒ

๐Ÿง  7. ์ฟ ํ‚ค์˜ ๋ณด์•ˆ ์ทจ์•ฝ์ 

โš ๏ธ 7.1 XSS (Cross-Site Scripting)

  • JavaScript๋ฅผ ํ†ตํ•ด ์ฟ ํ‚ค ์ ‘๊ทผ โ†’ ํƒˆ์ทจ.

์˜ˆ๋ฐฉ:

  • HttpOnly ์†์„ฑ ์‚ฌ์šฉ.

โš ๏ธ 7.2 CSRF (Cross-Site Request Forgery)

  • ๊ณต๊ฒฉ์ž๊ฐ€ ์‚ฌ์šฉ์ž์˜ ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด ์•…์„ฑ ์š”์ฒญ ์ „์†ก.

์˜ˆ๋ฐฉ:

  • SameSite ์†์„ฑ ์‚ฌ์šฉ.

โš ๏ธ 7.3 ์ค‘๊ฐ„์ž ๊ณต๊ฒฉ (MITM)

  • HTTP ํ†ต์‹ ์—์„œ ์ฟ ํ‚ค๊ฐ€ ๋…ธ์ถœ.

์˜ˆ๋ฐฉ:

  • Secure ์†์„ฑ ์‚ฌ์šฉ.
  • HTTPS ์‚ฌ์šฉ ํ•„์ˆ˜.

๐Ÿš€ 8. ์ฟ ํ‚ค ์‚ฌ์šฉ Best Practice

  1. JWT๋Š” HttpOnly, Secure ์ฟ ํ‚ค์— ์ €์žฅ.
  2. SameSite=Strict๋กœ CSRF ๋ฐฉ์ง€.
  3. HTTPS ๊ฐ•์ œ ์‚ฌ์šฉ.
  4. ๋ฏผ๊ฐํ•œ ์ •๋ณด๋Š” ์ฟ ํ‚ค์— ์ €์žฅ ๊ธˆ์ง€.
  5. ์œ ํšจ ์‹œ๊ฐ„(Max-Age)์„ ์ตœ์†Œํ™”.

๐ŸŽฏ 9. ๊ฒฐ๋ก 

  • HttpOnly + Secure + SameSite ์„ค์ •์€ ํ•„์ˆ˜!
  • ์ฟ ํ‚ค๋Š” ์›น ๋ณด์•ˆ์„ ์œ„ํ•ด ์‹ ์ค‘ํ•˜๊ฒŒ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
  • ๋ฏผ๊ฐํ•œ ์ •๋ณด๋Š” ์ฟ ํ‚ค์— ์ €์žฅํ•˜์ง€ ๋ง๊ณ , ํ† ํฐ์€ HttpOnly Secure ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์ž.

๐Ÿ“š 10. ์ถ”๊ฐ€ ํ•™์Šต


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