๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋‚˜์˜ ๋ชจ์–‘

061 | ์ธ์ฆ๋ณด์•ˆ ๊ธฐ์ดˆ ๋ณธ๋ฌธ

SEB/TIL

061 | ์ธ์ฆ๋ณด์•ˆ ๊ธฐ์ดˆ

kexon 2022. 9. 20. 22:08

๐ŸŽˆ HTTPS(Hyper Text Transfer Protocal Secure Socket layer)

HTTPS๋Š” ๊ธฐ์กด HTTP์—์„œ ๋ณด์•ˆSecure์ด ๊ฐ•ํ™”๋œ ๊ฒƒ์œผ๋กœ, HTTPS๋Š” HTTP์š”์ฒญ์„ SSL ๋˜๋Š” TLS๋ผ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด ์•”ํ˜ธํ™” ํ•˜์—ฌ ์ „์†กํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค. 

HTTPS๋Š” ๋น„๋Œ€์นญ ์•”ํ˜ธํ™” ํ‚ค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์•”ํ˜ธํ™” ํ• ๋•Œ ์‚ฌ์šฉ๋œ ํ‚ค์™€ ๋ณตํ˜ธํ™” ํ• ๋•Œ ์‚ฌ์šฉ๋œ ํ‚ค๊ฐ€ ์„œ๋กœ ๋‹ฌ๋ผ ๋น„๋Œ€์นญ์ด๋ผ๊ณ  ํ•œ๋‹ค.

HTTPS๋Š” 2๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ ์•”ํ˜ธํ™”๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.

  1. ์•”ํ˜ธํ™”
  2. ์ธ์ฆ์„œ

๐Ÿงฉ ์•”ํ˜ธํ™”

  • HTTPS๋Š” ๋Œ€์นญํ‚ค์™€ ๋น„๋Œ€์นญํ‚ค๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•œ๋‹ค. ๋น„๋Œ€์นญํ‚ค๋ฅผ ์ด์šฉํ•˜์—ฌ ๋Œ€์นญํ‚ค๋ฅผ ์ฃผ๊ณ ๋ฐ›์€ ํ›„ ์ฃผ๊ณ ๋ฐ›์€ ๋Œ€์นญํ‚ค๋กœ ์•”ํ˜ธํ™”๋ฅผ ํ•œ๋‹ค. ๋น„๋Œ€์นญ ํ‚ค๋Š” 2๊ฐ€์ง€์˜ ํ‚ค๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค.
    • ๋น„๋ฐ€ํ‚ค(private Key): ๋‚˜๋งŒ ๊ฐ–๊ณ  ์žˆ์Œ
    • ๊ณต๊ฐœํ‚ค(public key): ๊ณต๊ฐœ์ ์ธ ํ‚ค
  • ๊ณต๊ฐœํ•  ํ‚ค, ๋‚˜๋งŒ ๊ฐ€์งˆ ํ‚ค๋ฅผ ๋‚˜๋ˆ„์–ด ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๊ฐ€ ๋ถˆํŠน์ • ๋‹ค์ˆ˜์ธ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ, ๋ถˆํŠน์ • ๋‹ค์ˆ˜์˜ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋Š” ์ค‘ ์ œ3์ž๊ฐ€ ์ •๋ณด๋ฅผ ํƒˆ์ทจํ•˜๋”๋ผ๋„ ์„œ๋ฒ„๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋น„๋ฐ€ํ‚ค๊ฐ€ ์žˆ์–ด์•ผ๋งŒ ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณตํ˜ธํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋น„๋ฐ€ํ‚ค ์•”ํ˜ธํ™” → ๊ณต๊ฐœํ‚ค ๋ณตํ˜ธํ™” || ๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™” → ๋น„๋ฐ€ํ‚ค ๋ณตํ˜ธํ™”๋กœ ๋น„๋ฐ€ํ‚ค์™€ ๊ณต๊ฐœํ‚ค๋Š” ์„œ๋กœ ์•”ํ˜ธํ™”์™€ ์•”ํ˜ธํ™”์— ๋Œ€ํ•œ ๋ณตํ˜ธํ™”๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • private key์™€ public key๋Š” ํ•œ ์Œ์ด๋‹ค. ๋ˆ„๊ตฌ๋‚˜ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” public key ์†Œ์œ ์ž๋Š” private key๋กœ ์•”ํ˜ธํ™”๋œ ์„œ๋ฒ„์—์„œ ๋ฐ›์€ ๋ฐ์ดํ„ฐ ๋ณตํ˜ธํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฉฐ, private key ์†Œ์œ ์ž (์„œ๋ฒ„)๋Š” public key๋กœ ์•”ํ˜ธํ™”ํ•œ ๋ฐ์ดํ„ฐ ๋ณตํ˜ธํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. public key๊ฐ€ ๋ˆ„๊ตฌ๋‚˜ ๊ฐ€์ง€๊ณ  ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๊ณต๊ฐœํ‚ค๊ฐ€ ๋ฐ์ดํ„ฐ ์ œ๊ณต์ž์˜ ์‹ ์›์„ ๋ณด์žฅํ•ด ์ฃผ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๐Ÿงฉ ์ธ์ฆ์„œ

  • ์„œ๋ฒ„๋ฅผ ๋ณด์ฆํ•  ์ˆ˜ ์žˆ๋Š” Certificate Authority(CA)๋Š” ์—„๊ฒฉํ•˜๊ฒŒ ๊ณต์ธ๋œ ๊ธฐ๊ด€๋“ค์„ ๋งํ•œ๋‹ค. CA๋“ค์€ ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค์™€ CA์˜ ๋น„๋ฐ€ํ‚ค๋กœ ์•”ํ˜ธํ™”๋œ ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ํ•œ๋‹ค. CA์˜ ๋น„๋ฐ€ํ‚ค๋กœ ์•”ํ˜ธํ™”๋œ ์ธ์ฆ์„œ๋ฅผ CA์˜ ๊ณต๊ฐœํ‚ค๋กœ ๋ณตํ˜ธํ™”ํ•˜ํ•˜๋ฉด CA์—์„œ ๋ฐœ๊ธ‰ํ•œ ์ธ์ฆ์„œ๋ฅผ ๋ณด์ฆํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๊ณ  ์ ‘์†ํ•  ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.
  • ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„ CA๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๋ฅผ ์ธ์ฆํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์„ TLS ๋˜๋Š” SSL์ด๋ผ๊ณ  ํ•œ๋‹ค.

๐ŸŽˆ Hashing

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

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

๐ŸŽˆ Cookie

๐Ÿงฉ  Domain

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

๐Ÿงฉ Path

path์˜ ์˜ต์…˜๊ฐ’์œผ๋กœ ์„ค์ •๋œ ๊ฒฝ๋กœ๊ฐ€ URL์— ํฌํ•จ๋˜๋ฉด ์„œ๋ฒ„์— ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค.

path์˜ ์˜ต์…˜ ๊ฐ’์ด /users๋ฉด /users/login์€ ์‹คํ–‰ ๋˜์ง€๋งŒ /user/login์ด๋ฉด ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค.

 

๐Ÿงฉ MaxAge, Expire

์ฟ ํ‚ค์˜ ์œ ํšจ๊ธฐ๊ฐ„์„ ์ •ํ•˜๋Š” ์˜ต์…˜์œผ๋กœ, ์ผ์ • ๊ธฐ๊ฐ„์„ ์ •ํ•ด๋‘๊ณ  ํ•ด๋‹น ๊ธฐ๊ฐ„์ด ๋งŒ๋ฃŒ๋œ๋‹ค๋ฉด ์ž๋™์œผ๋กœ ์‚ญ์ œ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

MaxAge๋Š” ๋ช‡ ์ดˆ๋™์•ˆ ์ฟ ํ‚ค๊ฐ€ ์œ ํšจํ•  ๊ฒƒ์ธ์ง€ ์ •ํ•˜๋Š” ์˜ต์…˜์ด๊ณ , Expires๋Š” ์ฟ ํ‚ค๊ฐ€ ์–ธ์ œ๊นŒ์ง€ ์œ ํšจํ• ์ง€ Date๋ฅผ ์ง€์ •ํ•œ๋‹ค.(ํด๋ผ์ด์–ธํŠธ ๊ธฐ์ค€)

  • ์„ธ์…˜ ์ฟ ํ‚ค: MaxAge ๋˜๋Š” Expires์˜ต์…˜์ด ์—†๋Š” ์ฟ ํ‚ค๋กœ ๋ธŒ๋ผ์šฐ์ € ์ข…๋ฃŒ์‹œ ์ž๋™ ์‚ญ์ œ๋œ๋‹ค.
  • ์˜์†์„ฑ ์ฟ ํ‚ค: ๋ธŒ๋ผ์šฐ์ € ์ข…๋ฃŒ ์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด MaxAge ๋˜๋Š” Expires์— ์ง€์ •๋œ ์œ ํšจ์‹œ๊ฐ„ ๋งŒํผ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค.

๐Ÿงฉ Secure

ํ”„๋กœํ† ์ฝœ์— ๋”ฐ๋ผ ์ฟ ํ‚ค ์ „์†ก์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. Secure ์˜ต์…˜์ด true์ผ ๋•Œ HTTPS ํ”„๋กœํ† ์ฝœ๋กœ ํ†ต์‹ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•˜์ง€๋งŒ ์˜ต์…˜์ด ์—†๋‹ค๋ฉด ํ”„๋กœํ† ์ฝœ์— ์ƒ๊ด€ ์—†์ด ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•œ๋‹ค.

 

๐Ÿงฉ HttpOnly

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ธŒ๋ผ์šฐ์ €์˜ ์ฟ ํ‚ค์— ์ ‘๊ทผ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.

  • ์˜ต์…˜์ด true์ธ ๊ฒฝ์šฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์ฟ ํ‚ค์— ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€ํ•˜๋‹ค. true์ง€์ • ์‹œ HTTP๋กœ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•˜๋Š” ์˜ต์…˜์ด HttpOnly์ด๋‹ค.
  • ๊ธฐ๋ณธ ์„ค์ •์€ false์ด์ง€๋งŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ <script> ํƒœ๊ทธ๋กœ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ด์„œ XSS๊ณต๊ฒฉ์— ์ทจ์•ฝํ•˜๋‹ค.

๐Ÿงฉ SameSite

same-site๋Š” ์š”์ฒญ์„ ๋ณด๋‚ธ Origin๊ณผ ์„œ๋ฒ„์˜ ๋„๋ฉ”์ธ, ํ”„๋กœํ† ์ฝœ, ํฌํŠธ๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ๋ฅผ ๋งํ•œ๋‹ค. ์ด ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋‹ค๋ฅด๋‹ค๋ฉด Cross-Origin์œผ๋กœ ๊ตฌ๋ถ„๋œ๋‹ค. Cross-Origin ์š”์ฒญ์„ ๋ฐ›์€ ๊ฒฝ์šฐ ์š”์ฒญ์—์„œ ์‚ฌ์šฉํ•œ ๋ฉ”์†Œ๋“œ์™€ ํ•ด๋‹น ์˜ต์…˜(e.g. GET, POST, PUT, PATCH …)์˜ ์กฐํ•ฉ์œผ๋กœ ์„œ๋ฒ„์˜ ์ฟ ํ‚ค ์ „์†ก ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.

  • SameSite ์˜ต์…˜
    • LAX: Cross-Origin ์š”์ฒญ์€ GET๋ฉ”์„œ๋“œ์— ๋Œ€ํ•ด์„œ๋งŒ ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค.
    • STRICT: Cross-Origin ์š”์ฒญ์€ ๊ฑฐ์ ˆํ•˜๊ณ  SameSite์ธ ๊ฒฝ์šฐ์—๋งŒ ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•œ๋‹ค.
    • None: HTTPS ํ”„๋กœํ† ์ฝœ์—์„œ๋งŒ Cross-Origin ์š”์ฒญ์— ํ•ญ์ƒ ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿงฉ Session

  1. ์„œ๋ฒ„๋Š” ์ธ์ฆ(Authentication)์— ์„ฑ๊ณตํ–ˆ๋‹ค๊ณ  ํŒ๋‹จ๋˜๋ฉด ์•”ํ˜ธํ™”๋œ ์„ธ์…˜์•„์ด๋””๋ฅผ ์ฟ ํ‚ค์— ๋‹ด์•„์„œ ์„œ๋ฒ„ → ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.
  2. ๋กœ๊ทธ์ธ์œผ๋กœ ์ธ์ฆ์— ์„ฑ๊ณตํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ๋Š” ๊ฐ€์ง€๊ณ  ์žˆ๋˜ ์„ธ์…˜์•„์ด๋””๋ฅผ ์‹ ๋ถ„์ฆ ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•ด์„œ ๋‹ค์‹œ ๋กœ๊ทธ์ธ ํ•  ํ•„์š” ์—†์ด ํ•„์š”ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  3. ์„œ๋ฒ„๋Š” ์„ธ์…˜์•„์ด๋””๋ฅผ ํ™•์ธํ•˜๊ณ  ์ž‘์—…์„ ์—…๋ฐ์ดํŠธ ํ•œ๋‹ค. ์—…๋ฐ์ดํŠธ ํ›„ ์„ธ์…˜์•„์ด๋””๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ์— ๊ฒฐ๊ณผ ์‘๋‹ต์„ ์ „๋‹ฌํ•œ๋‹ค.

๐Ÿงฉ ๋กœ๊ทธ์•„์›ƒ

  • ์„œ๋ฒ„: ์„ธ์…˜ ์ •๋ณด๋ฅผ ์‚ญ์ œํ•ด์•ผ ํ•œ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ: ์ฟ ํ‚ค๋ฅผ ๊ฐฑ์‹ ํ•ด์•ผ ํ•œ๋‹ค.

๐ŸŽˆ ์›น ๋ณด์•ˆ ๊ณต๊ฒฉ

๐Ÿงฉ SQL Injection

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

  • SQL Injection ๋Œ€์ฒ˜๋ฒ•
    • ์ž…๋ ฅ(์š”์ฒญ) ๊ฐ’ ๊ฒ€์ฆ
      ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ๊ฐ€ ์•„๋‹Œ ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ ๋ฐฉ์‹(๊ธฐ๋ณธ ์ •์ฑ…์ด ๋ชจ๋‘ ์ฐจ๋‹จ์ธ ์ƒํ™ฉ์—์„œ ์˜ˆ์™ธ์ ์œผ๋กœ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•œ ๋Œ€์ƒ)์œผ๋กœ ํ•ด๋‹น ํ‚ค์›Œ๋“œ๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ” SQL Injection์— ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Prepared Statement ๊ตฌ๋ฌธ ์‚ฌ์šฉ
      ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ ๊ฐ’์ด ์ „๋‹ฌ ๋˜๊ธฐ ์ „์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋ฏธ๋ฆฌ ์ปดํŒŒ์ผํ•˜์—ฌ SQL์„ ๋ฐ”๋กœ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋Œ€๊ธฐํ•˜๋ฉฐ, ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ๊ฐ’์„ ๋‹จ์ˆœ ํ…์ŠคํŠธ๋กœ ์ธ์‹ํ•ด์„œ ์ž…๋ ฅ ๊ฐ’์ด SQL๋ฌธ์ด ์•„๋‹Œ ๋‹จ์ˆœ ํ…์ŠคํŠธ๋กœ ์ ์šฉ๋˜์–ด ๊ณต๊ฒฉ์— ์‹คํŒจํ•˜๊ฒŒ ๋œ๋‹ค.
    • Error Message ๋…ธ์ถœ ๊ธˆ์ง€

 

๐Ÿงฉ CSRF(Cross Site Request Forgery)

Cross-Origin์—์„œ ์œ ์ €๊ฐ€ ๋ณด๋‚ด๋Š” ์š”์ฒญ์„ ์กฐ์ž‘ํ•œ๋‹ค. ์ถœ์ฒ˜๊ฐ€ ๋‹ฌ๋ผ ์ง์ ‘ ๋ฐ์ดํ„ฐ์—๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค. ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๊ทธ์ธํ•  ๋•Œ, ๋˜ ์š”์ฒญ์ด๋‚˜ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์˜ˆ์ธก๊ฐ€๋Šฅํ•  ๋•Œ ๊ณต๊ฒฉํ•  ์ˆ˜ ์žˆ๋‹ค. 

  • CSRF ๋Œ€์ฒ˜๋ฒ•
    • CSRF ํ† ํฐ์„ ์œ ์ €์˜ ๋ธŒ๋ผ์šฐ์ €์™€ ์›น ์•ฑ์—๋งŒ ์ œ๊ณตํ•˜์—ฌ ์กฐํ•ฉ์œผ๋กœ ์ƒ์„ฑ๋œ ์š”์ฒญ์—๋งŒ ์„ฑ๊ณต์ ์œผ๋กœ ์‘๋‹ตํ•œ๋‹ค.
    • Same-site ์ฟ ํ‚ค์˜ต์…˜์„ ์ด์šฉํ•˜์—ฌ ๊ฐ™์€ ์‚ฌ์ดํŠธ์—์„œ๋งŒ ์‘๋‹ตํ•˜๊ฒŒ ํ•œ๋‹ค.

'SEB > TIL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

069 | AWS - EC2, RDS, S3  (0) 2022.09.30
067 | Spring Security - OAuth 2.0 Authentication  (0) 2022.09.28
058 | Asciidocs, Asciidoctor  (2) 2022.09.15
057 | API Documentation, Swagger, SpringRest  (0) 2022.09.14
052 | Transaction  (0) 2022.09.05
Comments