๐ŸŒˆ [Section4] 1. ์ธ์ฆ / ๋ณด์•ˆ

ํ˜„์ฃผยท2022๋…„ 11์›” 20์ผ
0

bootcamp

๋ชฉ๋ก ๋ณด๊ธฐ
55/71

๐Ÿ“• ์˜ค๋Š˜ ๋ฐฐ์šด ๋‚ด์šฉ!

  • HTTPS
  • ํ•ด์‹ฑ (Hashing)
  • ์ฟ ํ‚ค (Cookie)
  • ์„ธ์…˜ (Session)
  • ์›น ๋ณด์•ˆ ๊ณต๊ฒฉ

โœ๏ธ HTTPS ( Hyper Text Transfer Protocol Secure Socket layer )

  • HTTP + Secure(๋ณด์•ˆ)
    ( HTTP ์š”์ฒญ์„ SSL ํ˜น์€ TLS๋ผ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•ด, HTTP ํ†ต์‹ ์„ ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์ „์†กํ•˜๋Š” ๋ฐฉ๋ฒ• )

  • ๋Œ€๋ถ€๋ถ„์˜ ์›น์‚ฌ์ดํŠธ์˜ ๊ฒฝ์šฐ HTTPS๋ฅผ ์‚ฌ์šฉ

  • HTTP over SSL(TLS), HTTP over Secure๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•จ

๐Ÿ’ก ๊ธฐ์กด HTTP ์š”์ฒญ์€ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ค‘๊ฐ„์— ์ค‘๊ฐ„์ž ๊ณต๊ฒฉ(Man-in-the-middle attack)์„ ํ†ตํ•ด ์š”์ฒญ ๋‚ด์šฉ์„ ๋“ค์—ฌ๋‹ค๋ณธ๋‹ค๋ฉด ๋‹ค ๋ณผ ์ˆ˜ ์žˆ์—ˆ์Œ
โžœ ๊ฐœ์ธ์ •๋ณด ์œ ์ถœ ๊ฐ€๋Šฅ์„ฑ ์žˆ์Œ
[์ค‘๊ฐ„์ž ๊ณต๊ฒฉ ์ฐธ๊ณ ] https://en.wikipedia.org/wiki/Man-in-the-middle_attack

โœ” HTTPS์˜ ํŠน์ง•

  • ๊ธฐ๋ฐ€์„ฑ (privacy)
    โžœ ๋ฉ”์„ธ์ง€๋ฅผ ๊ฐ€๋กœ์ฑŒ ์ˆ˜ ์—†์Œ (์ฝ์„ ์ˆ˜ ์—†์Œ)

  • ๋ฌด๊ฒฐ์„ฑ (integrity)
    โžœ ๋ฉ”์‹œ์ง€๊ฐ€ ์กฐ์ž‘๋˜์ง€ ์•Š์Œ (์ˆ˜์ •ํ•  ์ˆ˜ ์—†์Œ)

โœ” HTTPS์˜ ๋ชฉ์ 

1. ์•”ํ˜ธํ™”

  • ์ผ๋ จ์˜ ์ •๋ณด๋ฅผ ์ž„์˜์˜ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ,
    ํ•ด๋‹น ๋ฐฉ์‹์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์†Œ์œ ํ•œ ์‚ฌ๋žŒ์„ ์ œ์™ธํ•˜๊ณ  ์ดํ•ดํ•  ์ˆ˜ ์—†๋„๋ก ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•ด ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ณผ์ •

  • HTTP ํ”„๋กœํ† ์ฝœ ๋‚ด์šฉ์„ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์ œ 3์ž๊ฐ€ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ฃผ๊ณ ๋ฐ›๋Š” ์ •๋ณด๋ฅผ ํƒˆ์ทจํ•  ์ˆ˜ ์—†๋„๋ก ํ•˜๋Š” ๊ฒƒ

  • ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์ถœ๋  ๊ฐ€๋Šฅ์„ฑ์ด HTTP๋ณด๋‹ค ํ˜„์ €ํžˆ ์ ์–ด์ง
    ( ์•”ํ˜ธ๋ฅผ ๋ณตํ˜ธํ™”ํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” ์–ด๋–ค ๋‚ด์šฉ์ธ์ง€ ์•Œ ์ˆ˜ ์—†์Œ )

  • ๋น„๋Œ€์นญํ‚ค ๋ฐฉ์‹๊ณผ ๋Œ€์นญํ‚ค ๋ฐฉ์‹์„ ํ˜ผ์šฉํ•˜์—ฌ ์‚ฌ์šฉ
    โžœ ํด๋ผ์ด์–ธํŠธ์—์„œ ๋งŒ๋“ค ๋Œ€์นญํ‚ค๋ฅผ ๋น„๋Œ€์นญํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์„œ๋ฒ„์— ์ „๋‹ฌ

    โœ”๏ธ ํ‚ค ์œ ํ˜•์— ๋”ฐ๋ฅธ ์•”ํ˜ธํ™” ๋ฐฉ์‹

    • ๋Œ€์นญํ‚ค ์•”ํ˜ธํ™” (ํ‚ค๊ฐ€ ํ•˜๋‚˜)
      โžœ ์–‘์ชฝ์ด ๊ณตํ†ต์˜ ๋น„๋ฐ€ ํ‚ค๋ฅผ ๊ณต์œ ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์•”๋ณตํ˜ธํ™”ํ•˜๋Š” ๊ฒƒ
      ( Ex. ๊ฐ€์กฑ๋ผ๋ฆฌ ์ง‘ ์—ด์‡  ๊ณต์œ ํ•˜๋Š” ๊ฒƒ )
      โžœ ๋น„๋Œ€์นญํ‚ค ์•Œ๊ณ ๋ฆฌ์ฆ˜๋ณด๋‹ค ํ›จ์”ฌ ๋ณต์žก์„ฑ์ด ๋‚ฎ์•„์„œ, ์ค‘๊ฐ„์— ์ •๋ณด๊ฐ€ ํƒˆ์ทจ๋˜๋ฉด ๋ชจ๋“  ๋ฐ์ดํ„ฐ์˜ ๋ณตํ˜ธํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋จ
      โžœ ๋Œ€์นญํ‚ค๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ๋Š” ๋น„๋Œ€์นญํ‚ค ๋ฐฉ์‹ ์‚ฌ์šฉ
      โ €โ €
    • ๋น„๋Œ€์นญํ‚ค ์•”ํ˜ธํ™” (ํ‚ค๊ฐ€ ๋‘๊ฐœ)
      โžœ ๊ฐ๊ฐ ๊ณต๊ฐœํ‚ค์™€ ๋น„๋ฐ€ํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ  ์ƒ๋Œ€๊ฐ€ ๋‚˜์˜ ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐœ์ธ์ด ๊ฐ€์ง„ ๋น„๋ฐ€ํ‚ค๋กœ ๋ณตํ˜ธํ™”ํ•˜๋Š” ๊ฒƒ
      ( ์•„๋ž˜ ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์ด ์žˆ์ง€๋งŒ ๊ฒฐ๊ตญ์€ ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™” ํ•ด์•ผ์ง€๋งŒ ์ •๋ณด ๋ณดํ˜ธ ๊ฐ€๋Šฅ )
      โžœ ๋Œ€์นญํ‚ค ์•Œ๊ณ ๋ฆฌ์ฆ˜๋ณด๋‹ค ํ›จ์”ฌ ๋ณต์žก
      โ €
      ๐Ÿ‘‰ ๊ฐœ์ธํ‚ค(private key)๋กœ ์•”ํ˜ธ / ๊ณต๊ฐœํ‚ค(public key)๋กœ ๋ณตํ˜ธ โžœ ์ „์ž์„œ๋ช…
      ( ์ •๋ณด ๋ณดํ˜ธ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ˆ„๊ฐ€ ๋ณด๋ƒˆ๋Š”์ง€๊ฐ€ ๊ถ๊ธˆํ•œ ๊ฒƒ (์‹ ์›ํ™•์ธ))
      โ €
      ๐Ÿ‘‰ ๊ณต๊ฐœํ‚ค(public key)๋กœ ์•”ํ˜ธ / ๊ฐœ์ธํ‚ค(private key)๋กœ ๋ณตํ˜ธ โžœ ์•”ํ˜ธํ™”
      ( ๋ง ๊ทธ๋Œ€๋กœ ์ •๋ณด๋ณดํ˜ธ )

    โœ”๏ธ ๋ฐฉํ–ฅ์— ๋”ฐ๋ฅธ ์•”ํ˜ธํ™” ๋ฐฉ์‹

    • ๋‹จ๋ฐฉํ–ฅ ์•”ํ˜ธํ™”
      โžœ ์•”ํ˜ธํ™”๋Š” ๋˜์ง€๋งŒ ๋ณตํ˜ธํ™”๋Š” ๋˜์ง€ ์•Š๋Š” ์•”ํ˜ธํ™” ๋ฐฉ์‹
      [์ฐธ๊ณ ] https://en.citizendium.org/wiki/One-way_encryption
      โ €โ €
    • ์–‘๋ฐฉํ–ฅ ์•”ํ˜ธํ™”
      โžœ ์•”ํ˜ธํ™” ๋ณตํ˜ธํ™” ๋ชจ๋‘ ๋˜๋Š” ์•”ํ˜ธํ™” ๋ฐฉ์‹

2. ์ธ์ฆ์„œ

  • ์„œ๋ฒ„์˜ ์‘๋‹ต๊ณผ ํ•จ๊ป˜ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „์†ก๋จ

  • ํ•ด๋‹น ์ธ์ฆ์„œ์˜ ๋‚ด์šฉ์— ์„œ๋ฒ„์˜ ๋„๋ฉ”์ธ ๊ด€๋ จ ์ •๋ณด๊ฐ€ ์žˆ์–ด์„œ ๋ฐ์ดํ„ฐ ์ œ๊ณต์ž์˜ ์ธ์ฆ์„ ์šฉ์ดํ•˜๊ฒŒ ํ•จ
    ( ํด๋ผ์ด์–ธํŠธ๋Š” CA์˜ ๊ณต๊ฐœํ‚ค๋กœ ๋ณตํ˜ธํ™”ํ•˜์—ฌ ์ธ์ฆ์„œ์— ์ž‘์„ฑ๋œ ๋„๋ฉ”์ธ๊ณผ ์‘๋‹ต๋ฐ์ดํ„ฐ์˜ ๋„๋ฉ”์ธ๊ณผ ๋น„๊ตํ•˜์—ฌ ํ™•์ธ )

    ๐Ÿ’ก ์—ฌ๊ธฐ์„œ ๋„๋ฉ”์ธ ์ •๋ณด๊ฐ€ ๊ฐ™๋‹ค๋ฉด ํ•ด๋‹น ์„œ๋ฒ„๊ฐ€ ๋งž์Œ์„ ํ™•์‹ ํ•˜๊ณ ,
    ์ค‘๊ฐ„์ž ๊ณต๊ฒฉ์œผ๋กœ ์ธํ•ด ๋„๋ฉ”์ธ ์ •๋ณด๊ฐ€ ๋‹ค๋ฅด๋‹ค๋ฉด ์„œ๋ฒ„๊ฐ€ ์•„๋‹˜์„ ํ™•์‹ ํ•จ !

  • ์ด ์ธ์ฆ์„œ๋กœ ์„œ๋ฒ„(๋ฐ์ดํ„ฐ ์ œ๊ณต์ž)์˜ ์‹ ์› ๋ณด์žฅ ๊ฐ€๋Šฅ

  • ์ด๋ฅผ ๋ณด์žฅํ•˜๋Š” ์ œ 3์ž = CA

    โœ”๏ธ CA (Certificate Authority) (๊ณต์ธ ์ธ์ฆ์„œ ๋ฐœ๊ธ‰ ๊ธฐ๊ด€)

    • ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค + ์ •๋ณด๋ฅผ CA์˜ ๋น„๋ฐ€ํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ํ•จ
      ( ์ด ์ธ์ฆ์„œ๋Š” CA์˜ ๊ณต๊ฐœํ‚ค๋กœ ๋ณตํ˜ธํ™” ๊ฐ€๋Šฅ )
      ( ํ•ด๋‹น ๊ธฐ๊ด€์˜ ๋น„๋ฐ€ํ‚ค๊ฐ€ ์œ ์ถœ๋˜๋ฉด ํŒŒ์‚ฐ๋„ ๊ฐ€๋Šฅํ•จ )
      โ €
    • ๊ฐ ๋ธŒ๋ผ์šฐ์ €๋Š” ๊ฐ์ž ์‹ ๋ขฐํ•˜๋Š” CA์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ
      ( ๋ธŒ๋ผ์šฐ์ €๋งˆ์ž ์ธ์ฆ์„œ๊ฐ€ ์ฐจ์ด๊ฐ€ ๋‚จ )
      ( ์ž๊ฒฉ์ด ๊ณ„์† ์œ ์ง€๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ฐ•ํƒˆ๋‹นํ•  ์ˆ˜๋„ ์žˆ์Œ )
      โ €
    • ์ „ํ˜€ ๋‹ค๋ฅธ ํ‚ค ํ•œ์Œ์œผ๋กœ ์•”ํ˜ธํ™” / ๋ณตํ˜ธํ™” ๊ฐ€๋Šฅ
      ( A ํ‚ค๋กœ ์•”ํ˜ธํ™”๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค๋ฉด ๋ณตํ™”ํ™” ํ•  ๋•Œ๋Š” Aํ‚ค์˜ ํ•œ ์Œ์ธ Bํ‚ค๊ฐ€ ํ•„์š” )
      โ €โžœ HTTPS ์ด์šฉํ•˜๋Š” ์„œ๋ฒ„๋Š” ํ‚ค ํ•˜๋‚˜๋ฅผ ๋น„๋ฐ€๋กœ ์ˆจ๊ฒจ๋‘๊ณ , ๋‚˜๋จธ์ง€ ํ•˜๋‚˜๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๊ณต๊ฐœํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ „์†กํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ
      ( But, ๊ณต๊ฐœํ‚ค ์—ฐ์‚ฐ์€ ๋งค์šฐ ๋ณต์žกํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์š”์ฒญ์— ๊ณต๊ฐœํ‚ค ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹˜ - ํ†ต์‹  ์ฒ˜์Œ ๋Œ€์นญํ‚ค ์ „์†ก์—๋งŒ ์‚ฌ์šฉ )

โœ”๏ธ TLS or SSL

  • ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„์˜ CA๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๋ฅผ ์ธ์ฆํ•˜๋Š” ๊ณผ์ •๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜๋Š” ๊ณผ์ •์„ ์•„์šฐ๋ฅธ ํ”„๋กœํ† ์ฝœ
    ( SSL๊ณผ TLS๋Š” ์‚ฌ์‹ค์ƒ ๋™์ผํ•œ ๊ทœ์•ฝ / SSL์ด ํ‘œ์ค€ํ™”๋˜๋ฉฐ ๋ฐ”๋€ ์ด๋ฆ„์ด TLS )

โœ” HTTPS ํ†ต์‹  ์‹œ์ž‘์„ ์œ„ํ•œ TSL(SSL) ํ•ธ๋“œ ์‰์ดํฌ ๊ณผ์ •

1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ํ—ฌ๋กœ ์š”์ฒญ

๐Ÿ’ฌ ํด๋ผ์ด์–ธํŠธ :
์„œ๋ฒ„์•ผ ์•ˆ๋…•.
๋‚˜ ์š”์ฒญ ๋ณด๋‚ผ๊ฑฐ์•ผ.

2. ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ธ์ฆ์„œ๋ฅผ ํฌํ•จํ•ด์„œ ํ—ฌ๋กœ ์‘๋‹ต

๐Ÿ’ฌ ์„œ๋ฒ„ :
ํด๋ผ์ด์–ธํŠธ์•ผ ์•ˆ๋…•.
์—ฌ๊ธฐ ์ธ์ฆ์„œ + ๊ณต๊ฐœํ‚ค ์ค„๊ฒŒ.

3. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋‚ด์žฅ๋œ CA ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ณด๊ณ  ์ธ์ฆ์„œ ํ™•์ธ ํ›„,
CA์˜ ๊ณต๊ฐœํ‚ค๋กœ ๋ณตํ˜ธํ™”๋ฅผ ํ†ตํ•ด ์ธ์ฆ์„œ๋ฅผ ๊ฒ€์ฆ

๐Ÿ’ฌ ํด๋ผ์ด์–ธํŠธ :
๋ฐ›์€ ๊ณต๊ฐœํ‚ค๋กœ ์ธ์ฆ์„œ ์—ด์–ด๋ณผ๊ฒŒ.
๋„ˆ ๋‚ด๊ฐ€ ์•„๋Š” ์„œ๋ฒ„๊ฐ€ ๋งž๊ตฌ๋‚˜.

4. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋Œ€์นญํ‚ค ๋งŒ๋“ค์–ด์„œ ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•ด์„œ ์„œ๋ฒ„์— ์ „๋‹ฌ

๐Ÿ’ฌ ํด๋ผ์ด์–ธํŠธ :
๊ทธ๋Ÿผ ๋‚ด๊ฐ€ ๋Œ€์นญํ‚ค ๋งŒ๋“ค์–ด์„œ ๋„ค๊ฐ€ ์ค€ ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•ด์„œ ๋„ˆํ•œํ…Œ ์ค„๊ฒŒ.

5. ์„œ๋ฒ„๋Š” ์„œ๋ฒ„์˜ ๊ฐœ์ธํ‚ค๋กœ ๋ณตํ˜ธํ™”ํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์˜ ๋Œ€์นญํ‚ค๋ฅผ ํ™•์ธ

๐Ÿ’ฌ ์„œ๋ฒ„ :
๋„ˆ๊ฐ€ ์ค€ ๋Œ€์นญํ‚ค ๋‚ด๊ฐ€ ๊ฐ€์ง„ ๊ฐœ์ธํ‚ค๋กœ ๋ณตํ˜ธํ™”ํ•ด์„œ ์ž˜ ๋ฐ›์•˜์–ด.

6. ์„œ๋ฒ„๊ฐ€ ๋ฐ›์€ ๋Œ€์นญํ‚ค๋กœ ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”ํ•œ ํ›„, ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋‚ด์„œ ํ™•์ธ

๐Ÿ’ฌ ์„œ๋ฒ„ :
๊ทธ๋Ÿผ ๋‚ด๊ฐ€ ์ด ๋Œ€์นญํ‚ค๋กœ ๋ฐ์ดํ„ฐ ํ•œ๋ฒˆ ์•”ํ˜ธํ™”ํ•ด์„œ ๋ณด๋‚ด๋ณผ๊ฒŒ.

7. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ€์นญํ‚ค๋กœ ๋ณตํ˜ธํ™”ํ•ด์„œ ์„œ๋กœ ๋Œ€์นญํ‚ค๋ฅผ ์ž˜ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธ
( HTTPS ์—ฐ๊ฒฐ ์„ฑ๊ณตํ•œ ์ƒํƒœ )

๐Ÿ’ฌ ํด๋ผ์ด์–ธํŠธ :
๋„ˆ๊ฐ€ ์ค€ ๋ฐ์ดํ„ฐ ๋Œ€์นญํ‚ค๋กœ ์—ด์–ด๋ดค๋”๋‹ˆ ์ž˜ ์™”์–ด.
๋„ˆ ๋‚ด๊ฐ€ ์ค€ ๋Œ€์นญํ‚ค ์ž˜ ๊ฐ€์ง€๊ณ  ์žˆ๊ตฌ๋‚˜.

8. ์ด ํ›„์—๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋Š” ์„œ๋กœ ๋Œ€์นญํ‚ค๋กœ ์•”๋ณตํ˜ธํ™”๋ฅผ ์ง„ํ–‰ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†ก

๐Ÿ’ฌ ํด๋ผ์ด์–ธํŠธ / ์„œ๋ฒ„ :
์ด์ œ ์šฐ๋ฆฌ ๋‘˜ ๋‹ค ๋Œ€์นญํ‚ค ์ž˜ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋‹ˆ๊นŒ ์ด๊ฑธ๋กœ ๋ฐ์ดํ„ฐ ์ฃผ๊ณ ๋ฐ›์ž.


โœ๏ธ Hashing

  • ์–ด๋– ํ•œ ๋ฌธ์ž์—ด์— ์ž„์˜์˜ ์—ฐ์‚ฐ์„ ์ ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ

  • input โžœ output ์ด ํ•ญ์ƒ ๋™์ผํ•จ
    ( ์›๋ณธ ์•”ํ˜ธ๊ฐ€ ๊ฐ™๋‹ค๋ฉด ํ•ด์‹œ๊ฐ’๋„ ํ•ญ์ƒ ๋™์ผ )

  • ํ•ด์‹ฑ๋œ ๊ฐ’์€ ์‚ฌ์‹ค์ƒ ๋ณตํ˜ธํ™”๊ฐ€ ๋ถˆ๊ฐ€๋Šฅ
    ( But, ์•”ํ˜ธํ™”ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์•Œ๊ฒŒ๋˜๋ฉด ํ•ด๋… ๊ฐ€๋Šฅ - ๋ ˆ์ธ๋ณด์šฐ ํ…Œ์ด๋ธ” )

  • ๋Œ€ํ‘œ์ ์ธ ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜
    โžœ SHA1(์š”์ฆ˜ ์‚ฌ์šฉ X) / ์š”์ฆ˜์—” SHA256 ๋งŽ์ด ์‚ฌ์šฉ

    SHA-256 ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ–ˆ์„ ๊ฒฝ์šฐ ์ถœ๋ ฅ๊ฐ’์˜ ๊ธธ์ด๋Š” ์ž…๋ ฅ๊ฐ’์˜ ๊ธธ์ด์™€ ๊ด€๊ณ„์—†์ด ์–ธ์ œ๋‚˜ 256๋น„ํŠธ(64 ๊ธ€์ž)

  • ๊ทนํžˆ ๋“œ๋ฌผ๊ฒŒ ๋‹ค๋ฅธ ์ž…๋ ฅ๊ฐ’์ธ๋ฐ ํ•ด์‹œ๋œ ๊ฐ’์ด ๊ฐ™์€ ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ

โœ” Hashing ๊ทœ์น™

1. ๋ชจ๋“  ๊ฐ’์— ๋Œ€ํ•ด ํ•ด์‹œ ๊ฐ’์„ ๊ณ„์‚ฐํ•˜๋Š”๋ฐ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ์ง€ ์•Š์•„์•ผ ํ•จ
( ์œ ์ €๊ฐ€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š์•„์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— )

2. ์ตœ๋Œ€ํ•œ ํ•ด์‹œ ๊ฐ’์„ ํ”ผํ•ด์•ผํ•˜๋ฉฐ, ๋ชจ๋“  ๊ฐ’์€ ๊ณ ์œ ํ•œ ํ•ด์‹œ๊ฐ’์„ ๊ฐ€์ง

3. ์•„์ฃผ ์ž‘์€ ๋‹จ์œ„์˜ ๋ณ€๊ฒฝ์ด๋ผ๋„ ์™„์ „ํžˆ ๋‹ค๋ฅธ ํ•ด์‹œ ๊ฐ’์„ ๊ฐ€์ ธ์•ผ ํ•จ

Ex. ์ด๋ฉ”์ผ ๊ด€๋ จ ์ •๋ณด ์–ป์„ ๊ฒฝ์šฐ,
1. ํด๋ผ์ด์–ธํŠธ๋Š” ์ด๋ฉ”์ผ๊ณผ ํ•จ๊ป˜ password๋ฅผ ์„œ๋ฒ„์— ์ „๋‹ฌ.
2. ์„œ๋ฒ„๋Š” ์ด ์ •๋ณด๋“ค์„ ๋ฐ›๊ณ  DB์—์„œ ๋น„๊ตํ•œ ํ›„, ์›๋ณธ password ๊ทธ๋Œ€๋กœ DB์— ์ €์žฅ.
3. ์ดํ›„ ์š”์ฒญ์—์„œ DB์— ๋ณด๊ด€๋œ ์ •๋ณด์™€ ์ผ์น˜ํ•˜๋ฉด, ํ•ด๋‹น ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ DB์—์„œ ์ฐพ์•„์„œ ์‘๋‹ต์œผ๋กœ ์ „๋‹ฌ
โ €
โ— DB์—๋Š” password๊ฐ€ ๊ทธ๋Œ€๋กœ ์ €์žฅ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํƒˆ์ทจ ๋‹นํ•˜๋ฉด ๊ฐœ์ธ์ •๋ณด๊ฐ€ ์œ ์ถœ๋จ
โžœ password๋ฅผ ํ•ด์‹ฑํ•˜์—ฌ DB์— ๋ณด๊ด€ํ•ด์•ผํ•จ

โœ”๏ธ shiftBy(๋ฌธ์ž์—ด, ์ˆซ์ž)
โžœ ์ž…๋ ฅ๋ฐ›์€ ๋ฌธ์ž์—ด์„ ์ž…๋ ฅ๋ฐ›์€ ์ˆซ์ž์˜ ๊ฐ’๋งŒํผ ์•ŒํŒŒ๋ฒณ ์ˆœ์„œ๋ฅผ ๊ฑด๋„ˆ๋›ด ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜ํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ
โ €
Ex. ์ธ์ฆ ๊ณผ์ •์—์„œ shiftBy ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์— ์ ์šฉ์„ ํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด,
์š”์ฒญ๊ณผ ํ•จ๊ป˜ ์ „๋‹ฌ๋ฐ›์€ password๋ฅผ ์„œ๋ฒ„์ธก์—์„œ ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•ด ํ•ด์‹œ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์•”ํ˜ธํ™”์‹œํ‚จ ํ›„ DB์— password ์ €์žฅํ•จ
โ €
์ดํ›„ ๋กœ๊ทธ์ธ์ด๋‚˜ ์ธ์ฆ์ด ํ•„์š”ํ•œ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด,
์ž…๋ ฅ๋ฐ›์€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ•ด์‹œ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ๊ณ  DB์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ํ•ด์‹œ๊ฐ’ ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ๋น„๊ต
โ €
โžœ ์•”ํ˜ธํ™”ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์ด๋ผ DB์˜ ๋น„๋ฐ€์ •๋ณด๊ฐ€ ํƒˆ์ทจ ๋‹นํ•ด๋„ ํ•ด์ปค๋Š” ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ์ธ์ •๋ณด ์œ ์ถœ ๊ฐ€๋Šฅ์„ฑ ํ˜„์ €ํžˆ ์ ์–ด์ง

โœ” Salt

  • ์•”ํ˜ธํ™” ํ•ด์•ผํ•˜๋Š” ๊ฐ’์— ์–ด๋–ค ๋ณ„๋„์˜ ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ณ€ํ˜• ์‹œํ‚ค๋Š” ๊ฒƒ
    Ex. (password + salt ๊ฐ’) ์ž์ฒด๋ฅผ ํ•ด์‹ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด ์•”ํ˜ธํ™”ํ•˜์—ฌ ์ด์˜ ํ•ด์‹œ๊ฐ’์„ DB์— ์ €์žฅ

  • ๋ ˆ์ธ๋ณด์šฐ ํ…Œ์ด๋ธ”(Rainbow Table)์„ ์ด์šฉํ•œ ๋ฌด์ฐจ๋ณ„ ๋Œ€์ž…(brute-force)๊ณต๊ฒฉ ์„ฑ๊ณต ํ™•๋ฅ ์„ ๋Œ€ํญ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ์Œ
    โžœ ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋…ธ์ถœ๋˜๋”๋ผ๋„ ์›๋ณธ๊ฐ’์„ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์•ˆ์ „ ์žฅ์น˜ ์—ญํ• 
    [๋ ˆ์ธ๋ณด์šฐ ํ…Œ์ด๋ธ” ์ฐธ๊ณ ]
    https://namu.wiki/w/%EB%A0%88%EC%9D%B8%EB%B3%B4%EC%9A%B0%20%ED%85%8C%EC%9D%B4%EB%B8%94

  • ์žฌ์‚ฌ์šฉ X
    โžœ ํด๋ผ์ด์–ธํŠธ์˜ ๊ณ„์ • ์ƒ์„ฑ ์‹œ / ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ ์‹œ ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ์ž„์˜์˜ Salt ์‚ฌ์šฉํ•˜์—ฌ ํ•ด์‹ฑ
    โžœ ์œ ์ €์™€ ํŒจ์Šค์›Œ๋“œ ๋ณ„๋กœ ์œ ์ผํ•œ ๊ฐ’์„ ๊ฐ€์ง

  • Salt๋Š” ์œ ์ € ํ…Œ์ด๋ธ”์— ๊ฐ™์ด ์ €์žฅ๋˜์–ด์•ผ ํ•จ

๐Ÿ’ก ํ•ด์‹œ๊ฐ’๋งŒ์œผ๋กœ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์ €์žฅํ•œ๋‹ค๊ณ  ํ•  ๊ฒฝ์šฐ,
์ด ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋งŒ ์•ˆ๋‹ค๋ฉด ํ•ด๋‹น ๊ฐ’์˜ output์ด ํ•ญ์ƒ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์— ์‰ฝ๊ฒŒ ์œ ์ถœ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Œ
โ €
โžœ ์›๋ณธ ๋ฌธ์ž์—ด์— Salt๊ฐ’์„ ์ถ”๊ฐ€ํ•œ ํ›„, Hashingํ•œ๋‹ค๋ฉด ์˜ˆ์ƒ์ด ํž˜๋“  ํ•ด์‹œ๊ฐ’ ๋งŒ๋“ค์–ด์ง
( salt๋ฅผ ๋ฟŒ๋ฆฐ๋‹ค๊ณ  ์ƒ๊ฐํ•ด )


  • ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์˜ ํ•˜๋‚˜
    ( HTTP ์š”์ฒญ์€ ๋ฌด์ƒํƒœ์„ฑ์ด์ง€๋งŒ ์ฟ ํ‚ค๊ฐ€ ์žˆ๊ธฐ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์ง€๋  ์ˆ˜ ์žˆ์Œ )

  • ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ผ๋ฐฉ์ ์œผ๋กœ ์ „์†กํ•˜๋Š” ์ž‘์€ ๋ฐ์ดํ„ฐ ์กฐ๊ฐ

  • ํด๋ผ์ด์–ธํŠธ๋Š” ํ•ด๋‹น ๋„๋ฉ”์ธ์— ๋Œ€ํ•œ (์„œ๋ฒ„์—๊ฒŒ ๋ฐ›์€)์ฟ ํ‚ค๋“ค์„ ์ €์žฅํ•ด๋†จ๋‹ค๊ฐ€,
    ๋™์ผํ•œ ์„œ๋ฒ„์— ์žฌ์š”์ฒญ์‹œ ์ฟ ํ‚ค(์ €์žฅ๋œ ๋ฐ์ดํ„ฐ)๋ฅผ ํ•จ๊ป˜ ์ „์†ก

โžœ ์‘๋‹ตํ•  ๋•Œ Set-Cookie๋กœ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ฟ ํ‚ค๊ฐ€ ์ €์žฅ๋˜๊ณ 
๋งค ์š”์ฒญ์‹œ๋งˆ๋‹ค ํ•ด๋‹น ์ฟ ํ‚ค๋ฅผ ์„œ๋ฒ„์— ๊ฐ™์ด ์ „๋‹ฌ
[์ฐธ๊ณ ] https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie

  • ์‚ญ์ œํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์‚ฌ๋ผ์ง€์ง€ ์•Š์Œ
    โžœ ์žฅ๊ธฐ๊ฐ„ ์ €์žฅํ•ด์•ผํ•˜๋Š” ์˜ต์…˜์„ ํด๋ผ์ด์–ธํŠธ์— ์ €์žฅํ•˜๊ธฐ์— ์ ํ•ฉ

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ฟ ํ‚ค์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅ

  • ์ธ์ฆ์ƒ ํ•œ๊ณ„๊ฐ€ ์žˆ์Œ โžœ ์„ธ์…˜์œผ๋กœ ํ•œ๊ณ„ ๊ทน๋ณต

( ์ฟ ํ‚ค์˜ ์˜ต์…˜์— ์•„๋ž˜ ์˜ต์…˜ ์ •๋ณด๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ~~๊ฒฝ์šฐ์— ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ฟ ํ‚ค ์ „์†ก )

1. Domain

  • ์„œ๋ฒ„์˜ ๋„๋ฉ”์ธ๊ณผ ์ฟ ํ‚ค์˜ ๋„๋ฉ”์ธ์ด ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ฟ ํ‚ค ์ „์†ก

    Ex. http://www.localhost.com:3000/users/login์—์„œ localhost.com๊ฐ€ ๋„๋ฉ”์ธ

2. Path

  • ์„œ๋ฒ„์™€ ์ฟ ํ‚ค์˜ ์„ธ๋ถ€ ๊ฒฝ๋กœ๊ฐ€ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ฟ ํ‚ค ์ „์†ก
    ( ์„ค์ •๋œ path๋ฅผ ์ „๋ถ€ ๋งŒ์กฑํ•˜๋Š” ๊ฒฝ์šฐ, ์š”์ฒญํ•˜๋Š” path๊ฐ€ ์ถ”๊ฐ€๋กœ ๋” ์กด์žฌํ•ด๋„ ์ฟ ํ‚ค ์ „์†ก ๊ฐ€๋Šฅ )

    Ex. http://www.localhost.com:3000/users/login์—์„œ path๊ฐ€ /users๋กœ ์„ค์ •๋˜์–ด ์žˆ๊ณ , ์š”์ฒญํ•˜๋Š” ์„ธ๋ถ€ ๊ฒฝ๋กœ๋Š” /users/login ์ด๋ผ๋ฉด ์ „์†ก ๊ฐ€๋Šฅ

3. MaxAge 0r Expires

  • ์ฟ ํ‚ค์˜ ์œ ํšจ๊ธฐ๊ฐ„ ์„ค์ •
    ( ์ด ์˜ต์…˜์˜ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์„ธ์…˜ ์ฟ ํ‚ค / ์˜์†์„ฑ ์ฟ ํ‚ค๋กœ ๋‚˜๋‰จ )

    Ex. pc๋ฐฉ ๊ฐ€์„œ ๋กœ๊ทธ์•„์›ƒ ์•ˆํ•˜๊ณ  ๊ฐ€๋ฉด ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋‚ด ์ •๋ณด ํƒˆ์ทจํ•  ๊ฐ€๋Šฅ์„ฑ ์žˆ์Œ
    -> ์ด ์˜ต์…˜์œผ๋กœ ์ฟ ํ‚ค์˜ ์œ ํšจ ๊ธฐ๊ฐ„์„ ์„ค์ •ํ•˜๋ฉด ์ž๋™์œผ๋กœ ์—†์–ด์ง€๊ฒŒ ๊ฐ€๋Šฅ

    • ์„ธ์…˜ ์ฟ ํ‚ค (Session Cookie)
      โžœ MaxAge / Expires ์˜ต์…˜์ด ์—†๋Š” ์ฟ ํ‚ค
      โžœ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์‹คํ–‰์ค‘์ผ ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ž„์‹œ ์ฟ ํ‚ค
      ( ๋ธŒ๋ผ์šฐ์ € ์ข…๋ฃŒ์‹œ ์ฟ ํ‚ค๋„ ์‚ญ์ œ )
      โ €
    • ์˜์†์„ฑ ์ฟ ํ‚ค (Persistent Cookie)
      โžœ MaxAge / Expires ์— ์ง€์ •๋œ ์œ ํšจ์‹œ๊ฐ„๋งŒํผ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ ์ฟ ํ‚ค
      ( ๋ธŒ๋ผ์šฐ์ € ์ข…๋ฃŒ ์—ฌ๋ถ€์™€ ์ƒ๊ด€ X )

4. Secure

  • Https ํ”„๋กœํ† ์ฝœ์—์„œ๋งŒ ์ฟ ํ‚ค ์ „์†ก ์—ฌ๋ถ€ ๊ฒฐ์ •
    โžœ ์ด ์˜ต์…˜์ด true๋กœ ์„ค์ •๋œ ๊ฒฝ์šฐ๋งŒ ์ฟ ํ‚ค ์ „์†ก

5. HttpOnly

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ธŒ๋ผ์šฐ์ €์˜ ์ฟ ํ‚ค์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ๊ฒฐ์ •
    โžœ ์ด ์˜ต์…˜์ด true๋กœ ์„ค์ •๋œ ๊ฒฝ์šฐ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์ฟ ํ‚ค์— ์ ‘๊ทผ ๋ถˆ๊ฐ€
    ( ๊ธฐ๋ณธ์€ false )

    Ex. ์ฟ ํ‚ค๋Š” <script> ํƒœ๊ทธ๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ ( XSS ๊ณต๊ฒฉ์— ์ทจ์•ฝ )
    โžœ ์ด ์˜ต์…˜์„ ์ฃผ๋ฉด ์ € ํƒœ๊ทธ๋กœ ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋„๋ก ๋ณด์•ˆ ๊ฐ•ํ™” ๊ฐ€๋Šฅ

    [XSS ์ฐธ๊ณ ] https://ko.wikipedia.org/wiki/%EC%82%AC%EC%9D%B4%ED%8A%B8_%EA%B0%84_%EC%9A%94%EC%B2%AD_%EC%9C%84%EC%A1%B0

6. SameSite

  • CORS ์š”์ฒญ์— ๋Œ€ํ•ด ๋ฉ”์„œ๋“œ์— ๋”ฐ๋ผ ์ฟ ํ‚ค ์ „์†ก ์—ฌ๋ถ€ ๊ฒฐ์ •

  • CSRF ๊ณต๊ฒฉ์„ ๋ง‰๋Š”๋ฐ ๋งค์šฐ ํšจ๊ณผ์ ์ธ ์˜ต์…˜

  • ์š”์ฒญ์„ ๋ณด๋‚ธ Origin๊ณผ ์„œ๋ฒ„์˜ ๋„๋ฉ”์ธ, ํ”„๋กœํ† ์ฝœ, ํฌํŠธ๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ๋ฅผ ๋งํ•จ
    ( ์ด ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋‹ค๋ฅด๋ฉด Cross-Origin )

    • Lax
      โžœ Cross-Origin ์š”์ฒญ์ด๋ฉด get ์š”์ฒญ์—์„œ๋งŒ ์ฟ ํ‚ค ์ „์†ก ๊ฐ€๋Šฅํ•ด
      (ํฌ๋กฌ ๊ธฐ๋ณธ๊ฐ’)
      โ €
    • Strict
      โžœ Cross-Origin์ด ์•„๋‹Œ same-site ์ธ ๊ฒฝ์šฐ์—๋งŒ ์ฟ ํ‚ค ์ „์†ก ๊ฐ€๋Šฅํ•ด
      โ €
    • None
      โžœ HTTPS๋ฉด ๋‹ค ์ƒ๊ด€ ์•ˆํ•˜๊ณ  ์ฟ ํ‚ค ์ „์†ก ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ค„๊ฒŒ
      ( ๋ชจ๋“  ์š”์ฒญ์— ์ฟ ํ‚ค ์ „์†กํ• ๊ฒŒ )
      โžœ ์ด ์˜ต์…˜์€ ์œ„ํ—˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Secure ์ฟ ํ‚ค ์˜ต์…˜์ด ํ•„์ˆ˜๋กœ ํ•จ๊ป˜ ์‚ฌ์šฉ๋จ
      โ €
      [์ฐธ๊ณ ] https://jjam89.tistory.com/231

๐Ÿ’ก SameSite vs SameOrigin


โœ๏ธ ์„ธ์…˜ (Session)

  • ์‚ฌ์šฉ์ž๊ฐ€ ์ธ์ฆ์— ์„ฑ๊ณตํ•œ ์ƒํƒœ
    Ex. ์€ํ–‰ ์–ดํ”Œ์—์„œ ์‚ฌ์šฉ ์•ˆํ•˜๋ฉด '60์ดˆ ํ›„์— ์„ธ์…˜์ด ๋‹ซํž™๋‹ˆ๋‹ค.' ์ด๋Ÿฐ ๊ฑฐ ๋‚˜์˜ค๋Š” ๊ฑฐ

  • ์„œ๋ฒ„์˜ ์ €์žฅ์†Œ์— ์„ธ์…˜ ์ €์žฅ
    Ex. in-memory / ์„ธ์…˜ ์Šคํ† ์–ด ๋“ฑ

  • ์„ธ์…˜์ด ๋งŒ๋“ค์–ด์ง€๋ฉด, ๊ฐ ์„ธ์…˜์„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋Š” ์„ธ์…˜ ID๋„ ๋งŒ๋“ค์–ด์ง

    โœ”๏ธ ์„ธ์…˜ ID

    • ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์— ๋ถ€์—ฌํ•˜๋Š” ์œ ์ผํ•˜๊ณ  ์•”ํ˜ธํ™”๋œ ID
    • ํด๋ผ์ด์–ธํŠธ์—์„œ ์„ธ์…˜ ์„ฑ๊ณต(์ธ์ฆ ์„ฑ๊ณต)์„ ์ฆ๋ช…ํ•  ์ˆ˜๋‹จ์œผ๋กœ ์‚ฌ์šฉ๋จ
      โ €
      Ex. ๋กœ๊ทธ์ธ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์ˆ˜๋‹จ์œผ๋กœ ์‚ฌ์šฉ
      ๋กœ๊ทธ์•„์›ƒ์ด๋ผ๊ณ  ํ•˜๋ฉด,
      ์„œ๋ฒ„๋Š” ์ด ์„ธ์…˜ ์ •๋ณด๋ฅผ ์‚ญ์ œํ•ด์•ผํ•˜๊ณ  / ํด๋ผ์ด์–ธํŠธ๋Š” (์„ธ์…˜ ์ •๋ณด๊ฐ€ ์‚ญ์ œ๋œ)์ฟ ํ‚ค๋ฅผ ๊ฐฑ์‹ ํ•ด์•ผ ํ•จ
  • ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์ฟ ํ‚ค ์ž„์˜๋กœ ์‚ญ์ œ ๋ถˆ๊ฐ€๋Šฅ
    But, Set-Cookie๋กœ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ฟ ํ‚ค ์ „์†กํ•  ๋•Œ ์„ธ์…˜ ์•„์ด๋””์˜ ํ‚ค ๊ฐ’์„ ๋ฌดํšจํ•œ ๊ฐ’์œผ๋กœ ๊ฐฑ์‹  ๊ฐ€๋Šฅ

  • ๋ณดํ†ต ํ•˜๋‚˜์˜ ์„œ๋ฒ„์—์„œ๋งŒ ์ ‘์† ์ƒํƒœ๋ฅผ ์ €์žฅ

๐Ÿ’ก jwt ๋ณด๋‹ค session์ด ์•ˆ์ „ํ• ๊นŒ?
โžœ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค๋ฆ„ !!
โžœ session ๋ฒ ์ด์Šค๋Š” response content type์ด html์ผ ๋•Œ ์ž์—ฐ์Šค๋Ÿฝ๊ณ ,
response type์ด application/json์ผ๋•Œ๋Š” JWT์„ ๋” ์„ ํ˜ธํ•œ๋‹ค
๋ผ๊ณ  ์ดํ•ดํ•˜๋ฉด ํŽธํ•  ๋“ฏํ•จ
[์ฐธ๊ณ ] https://github.com/boojongmin/memo/issues/7


โœ๏ธ HTTPS ํ†ต์‹  ์‹œ์ž‘์„ ์œ„ํ•œ TSL(SSL) ํ•ธ๋“œ ์‰์ดํฌ ๊ณผ์ • ์˜ˆ์‹œ

  1. ํด๋ผ์ด์–ธํŠธ(๊น€์ฝ”๋”ฉ) โžœ ์„œ๋ฒ„
    ๐Ÿ‘‰ ์œ ์ € ์•„์ด๋”” / ํŒจ์Šค์›Œ๋“œ ์“ฐ๊ณ  ์ด ์ฒญ๋ฐ”์ง€ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋„ฃ์–ด์ค˜

  2. ์„œ๋ฒ„ โžœ DB
    ๐Ÿ‘‰ ํ•ด์‹ฑํ•˜์—ฌ DB์— ์ •๋ณด ์ €์žฅ

  3. DB โžœ ์„œ๋ฒ„
    ๐Ÿ‘‰ session_id ๋ฐ˜ํ™˜

  4. ์„œ๋ฒ„ โžœ ํด๋ผ์ด์–ธํŠธ
    ๐Ÿ‘‰ Set-Cookie๋กœ ์•”ํ˜ธํ™”๋œ session_id ์ฟ ํ‚ค์— ๋„ฃ์–ด์„œ ๋ณด๋ƒ„

์ดํ›„ ์š”์ฒญ ํ•œ๋ฒˆ ๋” ๋ณด๋ƒ„

  1. ํด๋ผ์ด์–ธํŠธ โžœ ์„œ๋ฒ„
    ๐Ÿ‘‰ ์…”์ธ ๋„ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋„ฃ์–ด์ค˜
    ( ์ €์žฅ๋œ session_id๋กœ ํ•„์š”ํ•œ ์ž‘์—… ์ˆ˜ํ–‰ )

  2. ์„œ๋ฒ„ โžœ DB
    ๐Ÿ‘‰ session_id ํ™•์ธํ•˜๊ณ  ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์—…๋ฐ์ดํŠธ

  3. DB
    ๐Ÿ‘‰ session_id๊ฐ€ ์œ ํšจํ•˜๊ธฐ์— ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์—…๋ฐ์ดํŠธ ์™„๋ฃŒ

  4. ์„œ๋ฒ„ โžœ ํด๋ผ์ด์–ธํŠธ
    ๐Ÿ‘‰ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ €์žฅ ์™„๋ฃŒํ•จ

โžœ ์ธ์ฆ์— ๋”ฐ๋ผ ๋ฆฌ์†Œ์Šค์˜ ์ ‘๊ทผ ๊ถŒํ•œ์ด ๋‹ฌ๋ผ์ง

๐Ÿ’ก ์ฟ ํ‚ค vs ์„ธ์…˜

  • ์ ‘์† ์ƒํƒœ ์ €์žฅ ๊ฒฝ๋กœ
    • ์ฟ ํ‚ค โžœ ํด๋ผ์ด์–ธํŠธ
    • ์„ธ์…˜ โžœ ์„œ๋ฒ„
      โ €
  • ์žฅ์ 
    • ์ฟ ํ‚ค โžœ ์„œ๋ฒ„์— ๋ถ€๋‹ด์„ ๋œ์–ด์คŒ
    • ์„ธ์…˜ โžœ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ €์ธ์ง€ ์„œ๋ฒ„์—์„œ ์ถ”๊ฐ€๋กœ ํ™•์ธ ๊ฐ€๋Šฅ
      โ €
  • ๋‹จ์ 
    • ์ฟ ํ‚ค โžœ ์ฟ ํ‚ค ๊ทธ ์ž์ฒด๋Š” ์ธ์ฆ์ด ์•„๋‹˜
    • ์„ธ์…˜ โžœ ํ•˜๋‚˜์˜ ์„œ๋ฒ„์—์„œ๋งŒ ์ ‘์† ์ƒํƒœ๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ ๋ถ„์‚ฐ์— ๋ถˆ๋ฆฌ
      โ €
      โ— But, ์ฟ ํ‚ค์™€ ์„ธ์…˜์€ ๋น„๊ตํ• ๋งŒํ•œ ๋Œ€์ƒ์ด ์•„๋‹˜ !
      ์•„์ง ํ•™์Šต ์ดˆ๋ฐ˜์ด๋ผ ์‰ฌ์šด ์ดํ•ด๋ฅผ ์œ„ํ•˜์—ฌ ๊ฐ๊ฐ์˜ ํŠน์ง•๋“ค์„ ์•Œ์•„๋ณธ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ธฐ
      โ €
      [์ฐธ๊ณ ] https://codinglevelup.tistory.com/86

โœ๏ธ ์›น ๋ณด์•ˆ ๊ณต๊ฒฉ

โœ” SQL Injection

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ž„์˜์˜ SQL๋ฌธ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ช…๋ น์–ด๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๊ณต๊ฒฉ

  • ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ณด์•ˆ์ƒ์˜ ํ—ˆ์ ์„ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋น„์ •์ƒ์ ์œผ๋กœ ์กฐ์ž‘

โœ”๏ธ SQL Injection ๊ณต๊ฒฉ ๊ณผ์ •

  1. ๊ณต๊ฒฉ์ž๊ฐ€ ์•…์˜์ ์ธ SQL๋ฌธ์„ ๋„ฃ์–ด ์„œ๋ฒ„์— ์ „์†ก

  2. ์„œ๋ฒ„๊ฐ€ ํ•ด๋‹น SQL๋ฌธ์„ ๊ธฐ์กด SQL๋ฌธ์— ์‚ฝ์ž…ํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ฟผ๋ฆฌ ๋ณด๋ƒ„
    Ex. OR โ€˜1โ€™ = โ€˜1'๊ณผ ๊ฐ™์€ ๋‹น์—ฐํ•œ ์กฐ๊ฑด์„ SQL ๋ฌธ์— ์‚ฝ์ž…ํ•ด ๋ฌด์กฐ๊ฑด ์‘๋‹ต์ด ์˜ค๋„๋ก
    Ex. DROP TABLES users;--; ์ž‘์„ฑํ•˜๋ฉด ๋ชจ๋‘ ์‚ญ์ œ๋˜๋„๋ก

  3. id ๊ฒ€์ฆ ์—ฌ๋ถ€์™€ ์ƒ๊ด€ ์—†์ด ๋ชจ๋“  ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜

  4. ๋ชจ๋“  ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๊ฐ€ ๊ณต๊ฒฉ์ž์—๊ฒŒ ์ „์†ก๋จ

โœ”๏ธ SQL injection ๊ณต๊ฒฉ ๋Œ€์‘ ๋ฐฉ์•ˆ

  • ์ž…๋ ฅ(์š”์ฒญ)๊ฐ’ ๊ฒ€์ฆ
    โžœ ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ ๋ฐฉ์‹์œผ๋กœ ํ•ด๋‹น ํ‚ค์›Œ๋“œ๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ์น˜ํ™˜ํ•˜์—ฌ SQL Injection์— ๋Œ€์‘

    โœ”๏ธ ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ
    โžœ ๊ธฐ๋ณธ ์ •์ฑ…์ด ๋ชจ๋‘ ์ฐจ๋‹จ์ธ ์ƒํ™ฉ์—์„œ ์˜ˆ์™ธ์ ์œผ๋กœ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•œ ๋Œ€์ƒ์„ ์ง€์ •ํ•˜๋Š” ๋ฐฉ์‹ or ๊ทธ ์ง€์ •๋œ ๋Œ€์ƒ๋“ค

  • Prepared Statement ๊ตฌ๋ฌธ ์‚ฌ์šฉ
    โžœ ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์ด SQL๋ฌธ์œผ๋กœ๋ถ€ํ„ฐ ๋ถ„๋ฆฌ๋˜์–ด SQL Injection ๋ฐฉ์–ด

    ๐Ÿ’ก ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ๊ฐ’์ด ์ „๋‹ฌ๋˜๊ธฐ ์ „์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋ฏธ๋ฆฌ ์ปดํŒŒ์ผํ•˜์—ฌ,
    SQL๋ฌธ์„ ๋ฐ”๋กœ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋Œ€๊ธฐํ•˜๋ฉฐ ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ๊ฐ’์„ ๋‹จ์ˆœ ํ…์ŠคํŠธ๋กœ ์ธ์‹ํ•จ
    โžœ ์ž…๋ ฅ๊ฐ’์ด SQL๋ฌธ์ด ์•„๋‹Œ ๋‹จ์ˆœ ํ…์ŠคํŠธ๋กœ ์ ์šฉ๋˜์–ด ๊ณต๊ฒฉ ์‹คํŒจ

  • Error Message ๋…ธ์ถœ ๊ธˆ์ง€
    โžœ ๊ณต๊ฒฉ์ž๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ Error Message๋ฅผ ํ†ตํ•ด ํ…Œ์ด๋ธ”์ด๋‚˜ ์ปฌ๋Ÿผ ๋“ฑ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋Š”๋ฐ,
    ์ด SQL๋ฌธ๊ณผ Error ๋‚ด์šฉ์ด ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋…ธ์ถœ๋˜์ง€ ์•Š๋„๋ก ๋ณ„๋„์˜ ์—๋Ÿฌํ•ธ๋“ค๋ง ํ•„์š”

โœ” CSRF (Cross-Site Request Forgery)

  • ๋‹ค๋ฅธ Site์—์„œ ์œ ์ €๊ฐ€ ๋ณด๋‚ด๋Š” ์š”์ฒญ์„ ์กฐ์ž‘(forgery)ํ•˜๋Š” ๊ฒƒ
    ( ์ฃผ์†Œ๊ฐ€ ๋‹ค๋ฅธ ์‚ฌ์ดํŠธ์—์„œ ์š”์ฒญ์„ ์กฐ์ž‘ํ•˜๋Š” ๊ฒƒ ( ์‘๋‹ต์—๋Š” ์ ‘๊ทผ X ))
    โ €
    Ex. ๊น€์ฝ”๋”ฉ์ด ์€ํ–‰ ๋กœ๊ทธ์ธํ•˜๋Š”๋ฐ ํ•ด์ปค๊ฐ€ ์ŠคํŒธ๋ฉ”์ผ๋กœ ๋งํฌ ํด๋ฆญํ•˜๊ฒŒ ํ•จ
    ํ•ด์ปค๋Š” ๊ทธ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์ž๊ธฐ ๊ณ„์ขŒ๋กœ ๋ˆ ์ด์ฒด ๊ฐ€๋Šฅ

  • ํ•ด์ปค๊ฐ€ ์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Œ
    ๋‹ค๋ฅธ Origin์ด๋ผ์„œ ์‘๋‹ต(Response)์ •๋ณด๋ฅผ ์ง์ ‘ ๋ฐ›์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ์—๋„ ์ ‘๊ทผ ๋ถˆ๊ฐ€

[์ฐธ๊ณ ] https://ko.wikipedia.org/wiki/%EC%82%AC%EC%9D%B4%ED%8A%B8_%EA%B0%84_%EC%9A%94%EC%B2%AD_%EC%9C%84%EC%A1%B0

โœ”๏ธ CSRF ๊ณต๊ฒฉ์„ ํ•˜๊ธฐ ์œ„ํ•œ ์กฐ๊ฑด

  • ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•œ ๋กœ๊ทธ์ธ
    โžœ ์œ ์ €๊ฐ€ ๋กœ๊ทธ์ธ ํ–ˆ์„ ๋•Œ, ์ฟ ํ‚ค์— ์œ ์ € ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ์žˆ์–ด์•ผํ•จ

  • ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๋Š” ์š”์ฒญ / parameter๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผํ•จ
    โžœ ์š”์ฒญ์— ํ•ด์ปค๊ฐ€ ๋ชจ๋ฅด๋Š” ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ์žˆ์œผ๋ฉด ์•ˆ๋จ
    Ex. ์€ํ–‰์—์„œ ๋ˆ์„ ๋ฝ‘์œผ๋ ค๊ณ  ํ•  ๋•Œ password๋ฅผ ๋ชจ๋ฅด๊ณ  ์ด ๊ณต๊ฒฉ์„ ํ•˜์—ฌ ์กฐ์ž‘๋œ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค๋ฉด,
    ๊ฑฐ๊ธฐ์„œ ๋˜ password๋ฅผ ์ž…๋ ฅํ•ด์•ผ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์žฌ์š”์ฒญ์„ ํ•œ๋‹ค๋ฉด ์ด ๊ณต๊ฒฉ์€ ์‹คํŒจํ•  ๊ฒƒ

โœ”๏ธ CSRF ๊ณต๊ฒฉ ๋Œ€์‘ ๋ฐฉ์•ˆ

  • CSRF ํ† ํฐ ์‚ฌ์šฉํ•˜๊ธฐ
    โžœ ์„œ๋ฒ„ ์ธก์—์„œ CSRF ๊ณต๊ฒฉ์— ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•œ ํ† ํฐ ๋ฌธ์ž์—ด์„ ์œ ์ €์˜ ๋ธŒ๋ผ์šฐ์ €์™€ ์›น์•ฑ์—๋งŒ ์ œ๊ณตํ•˜์—ฌ, ์ด ์กฐํ•ฉ์œผ๋กœ ์ƒ์„ฑ๋œ ์š”์ฒญ์—๋งŒ ์„ฑ๊ณต์ ์œผ๋กœ ์š”์ฒญ์„ ์™„๋ฃŒํ•˜๋Š” ๋ฐฉ์‹
    โ €
    Ex. ํ•ด์ปค๊ฐ€ ๋‹ค๋ฅธ ์›น์‚ฌ์ดํŠธ๋ฅผ ํด๋ฆญํ•˜๊ฒŒ ํ•˜์—ฌ ๋ˆ์„ ๋นผ๊ฐ€๋Š” ๊ฒƒ ๋ฐฉ์ง€ ๊ฐ€๋Šฅ

  • Same-site cookie ์‚ฌ์šฉํ•˜๊ธฐ
    โžœ ๊ฐ™์€ ๋„๋ฉ”์ธ์—์„œ๋งŒ ์„ธ์…˜/์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์„œ, ๋„๋ฉ”์ธ์ด ๋‹ค๋ฅด๋‹ค๋ฉด ์š”์ฒญ์„ ๋ฐ›์•„์ฃผ์ง€ ์•Š๋Š” ๋ฐฉ์‹
    โ €
    Ex. ํ•ด์ปค๊ฐ€ ๋ณด๋‚ธ ํ•˜์ดํผ๋งํฌ๋ฅผ ํด๋ฆญํ•ด์„œ ์š”์ฒญ์„ ํ•˜๋”๋ผ๋„ ๋„๋ฉ”์ธ์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ฟ ํ‚ค ์ „์†ก ์•ˆ๋จ


๐Ÿ˜œ ์‹ค์Šต

  • projects - section4-week1

โœ”๏ธ ์‹ค์ œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ณด์•ˆ ๊ด€๋ จ์œผ๋กœ ์‹ ๊ฒฝ์จ์•ผํ•  ๊ฒƒ๋“ค

  • HTTPS ํ•„์ˆ˜ ์ ์šฉ

  • ๋ฏผ๊ฐํ•œ ์ •๋ณด๋Š” ์ตœ๋Œ€ํ•œ ๋…ธ์ถœ X

  • OWASP๊ฐ™์€ ๋ณด์•ˆ ๊ฐ€์ด๋“œ ์ ์šฉ
    ( ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ๋ณด์•ˆ ์—๋Ÿฌ ์„ค๋ช… )

  • ์ž˜ ๊ฒ€์ฆ๋œ ๋ณด์•ˆ ํ”„๋ ˆ์ž„์›Œํฌ ์‚ฌ์šฉ


๐ŸŒˆ ๋Š๋‚€์ 

์ด๋ฒˆ ํ•™์Šต์€ ์ดํ•ดํ•œ ๋‚ด์šฉ์„ ์ข€ ๋” ์‰ฝ๊ฒŒ์‰ฝ๊ฒŒ ์ž‘์„ฑํ•˜๋ ค๊ณ  ํ•˜๋‹ค๋ณด๋‹ˆ ์ข€ ๋Šฆ์—ˆ๋‹ค.
๊ทธ๋ž˜๋„ ๊ทธ๋งŒํผ ์ดํ•ด๊ฐ€ ์™„๋ฒฝํ•˜๊ฒŒ ๋œ ๊ฒƒ ๊ฐ™์•„์„œ ๋‹คํ–‰์ด๋‹ค !
๋ฌผ๋ก  ์ดํ•ด์™€ ์Šต๋“์€ ๋‹ค๋ฆ„ ใ… 
์ดํ•ด ์ž˜ ํ–ˆ์œผ๋‹ˆ๊นŒ ๋จธ๋ฆฌ์— ๋„ฃ๋„๋ก ํ•ด์•ผ์ง€ ..

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