(XSS, CSRF, SQL Injectionโ€ฆ ์ด๋ฆ„๋งŒ ๋“ค์–ด๋„ ๋ฌด์„ญ๋‹ค๊ตฌ์š”? ๐Ÿคฏ ๊ฑฑ์ •๋งˆ์„ธ์š”, ์•„์ฃผ ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•ด๋“œ๋ฆด๊ฒŒ์š”!)


๐Ÿ‘‹ Intro.

โ€œ์–ดโ€ฆ ๋ณด์•ˆ์€ ๋ฐฑ์—”๋“œ๋‚˜ ์‹œ๋‹ˆ์–ด๊ฐ€ ์‹ ๊ฒฝ์“ฐ๋Š” ๊ฑฐ ์•„๋ƒ?โ€
๋ผ๊ณ  ์ƒ๊ฐํ•˜์…จ๋‹ค๋ฉด ์ง€๊ธˆ ๋‹น์žฅ ์ด ํฌ์ŠคํŒ… ์ •๋…ํ•˜์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค!

ํ”„๋ก ํŠธ์—”๋“œ, ๋ฐฑ์—”๋“œ ๊ฐ€๋ฆด ๊ฒƒ ์—†์ด ์›น ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ๋ณด์•ˆ์€ ๊ธฐ๋ณธ๊ธฐ์˜ˆ์š”.
์•„๋ฌด๋ฆฌ ๊ธฐ๋Šฅ์ด ์ž˜ ๋Œ์•„๊ฐ€๋„, ๋ณด์•ˆ์ด ๋šซ๋ฆฌ๋ฉดโ€ฆ

๐Ÿ™ˆ "๊ณ ๊ฐ ์ •๋ณด ์œ ์ถœ", "๋‚ด ์„œ๋ฒ„๊ฐ€ ํ•ด์ปค ์„œ๋ฒ„๊ฐ€ ๋จ", "ํšŒ์‚ฌ ๋งํ•จ"
๊นŒ์ง€๋„ ํ˜„์‹ค์ด ๋ฉ๋‹ˆ๋‹ค.


โœ… ํ•ต์‹ฌ ๋ณด์•ˆ ์ด์Šˆ 5์ข… + ๊ธฐํƒ€ 5์ข…

(๐Ÿ‘ถ ์ดˆ๋ณด์ž๋„ ๊ฐœ๋…+์˜ˆ์‹œ+๋ฐฉ์–ด๋ฒ•๊นŒ์ง€ 3๋ถ„์ปท์œผ๋กœ ์™„๋ฒฝ ์ •๋ณต!)


1๏ธโƒฃ XSS (Cross-Site Scripting)

๐Ÿ“Œ ๊ฐœ๋…:
์›นํŽ˜์ด์ง€์— ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋„ฃ์–ด์„œ, ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰์‹œํ‚ค๋Š” ๊ณต๊ฒฉ

์˜ˆ์‹œ ์‹œ๋‚˜๋ฆฌ์˜ค:

  • ๋ˆ„๊ตฐ๊ฐ€ ๋Œ“๊ธ€์— ์ด๋ ‡๊ฒŒ ์”€:

    <script>alert("ํ•ดํ‚น๋๋‹ค!");</script>
  • ์ด๊ฒŒ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ๋˜๋ฉด,
    ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ด ๋Œ“๊ธ€ ๋ณผ ๋•Œ ๋ธŒ๋ผ์šฐ์ €์—์„œ ํŒ์—…์ด ๋œธ!

์™œ ์œ„ํ—˜ํ•œ๊ฐ€์š”?

  • ๋ธŒ๋ผ์šฐ์ € ์ฟ ํ‚ค ํƒˆ์ทจ ๊ฐ€๋Šฅ (์„ธ์…˜ ํ•˜์ด์žฌํ‚น)
  • ํ”ผ์‹ฑ ํŽ˜์ด์ง€ ์ž๋™ ์‹คํ–‰
  • ํ‚ค๋ณด๋“œ ์ž…๋ ฅ ๊ฐ์‹œ๊นŒ์ง€ ๊ฐ€๋Šฅ ๐Ÿ˜ฑ

๐Ÿ›ก๏ธ ๋ฐฉ์–ด๋ฒ•:

  • HTML ์ด์Šค์ผ€์ดํ”„ ์ฒ˜๋ฆฌ ํ•„์ˆ˜! (< โ†’ &lt;)
  • React/Vue๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ escape ์ฒ˜๋ฆฌํ•ด์คŒ
  • dangerouslySetInnerHTML, v-html ์‚ฌ์šฉ ์‹œ ์ฃผ์˜!

2๏ธโƒฃ CSRF (Cross-Site Request Forgery)

๐Ÿ“Œ ๊ฐœ๋…:
๋‚ด๊ฐ€ ๋กœ๊ทธ์ธํ•œ ์ƒํƒœ๋ฅผ ์•…์šฉํ•ด์„œ ๋ชฐ๋ž˜ ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๊ณต๊ฒฉ

์˜ˆ: ๋‚œ ํด๋ฆญํ•œ ์  ์—†๋Š”๋ฐ, ๋‚ด ๋ˆ์ด ๋น ์ ธ๋‚˜๊ฐ

์˜ˆ์‹œ ์‹œ๋‚˜๋ฆฌ์˜ค:

  • ๋‚˜๋Š” ์€ํ–‰ ์‚ฌ์ดํŠธ ๋กœ๊ทธ์ธ ์ค‘

  • ๋ˆ„๊ตฐ๊ฐ€ ๋งŒ๋“  ์‚ฌ์ดํŠธ์— ๋“ค์–ด๊ฐ€์ž๋งˆ์ž,

    <img src="https://bank.com/transfer?to=hacker&amount=10000" />

    ์ด ์š”์ฒญ์ด ์‹คํ–‰๋จ (๋ˆˆ์—๋„ ์•ˆ ๋ณด์ž„)

๐Ÿ›ก๏ธ ๋ฐฉ์–ด๋ฒ•:

  • CSRF Token (ํผ๋งˆ๋‹ค ๋žœ๋ค ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ถ™์ด๊ธฐ)
  • SameSite ์ฟ ํ‚ค ์„ค์ • (Strict, Lax)
  • ์ค‘์š”ํ•œ ์š”์ฒญ์€ GET ๋Œ€์‹  POST ์‚ฌ์šฉ!

3๏ธโƒฃ SQL Injection

๐Ÿ“Œ ๊ฐœ๋…:
์ž…๋ ฅ๊ฐ’์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ช…๋ น์–ด๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ํ•ดํ‚น

์˜ˆ: โ€œ๋กœ๊ทธ์ธ ์•ˆ ํ•ด๋„ ๋กœ๊ทธ์ธ๋จโ€

์˜ˆ์‹œ ์‹œ๋‚˜๋ฆฌ์˜ค:

  • ์•„์ด๋””์— ' OR 1=1 -- ์ž…๋ ฅํ•˜๋ฉด

    SELECT * FROM users WHERE id = '' OR 1=1 --;
  • ์กฐ๊ฑด์ด ๋ฌด์กฐ๊ฑด ์ฐธ โ†’ ๋กœ๊ทธ์ธ ์„ฑ๊ณต

๐Ÿ›ก๏ธ ๋ฐฉ์–ด๋ฒ•:

  • Prepared Statement (ํŒŒ๋ผ๋ฏธํ„ฐ ๋ฐ”์ธ๋”ฉ) ์‚ฌ์šฉ
  • ์ž…๋ ฅ๊ฐ’์€ ์ ˆ๋Œ€ ๋ฌธ์ž์—ด๋กœ ์ง์ ‘ ๋ถ™์ด์ง€ ๋ง๊ธฐ!

4๏ธโƒฃ Command Injection

๐Ÿ“Œ ๊ฐœ๋…:
์‚ฌ์šฉ์ž ์ž…๋ ฅ๊ฐ’์œผ๋กœ ์„œ๋ฒ„ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰์‹œ์ผœ๋ฒ„๋ฆฌ๋Š” ํ•ดํ‚น

์˜ˆ์‹œ ์‹œ๋‚˜๋ฆฌ์˜ค:

  • ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฆ„์— ; rm -rf / ์ž…๋ ฅ

  • ์„œ๋ฒ„์—์„œ ์‹คํ–‰:

    echo "์ด๋ฆ„: ; rm -rf /"
  • ์„œ๋ฒ„ ํŒŒ์ผ ๋‹ค ๋‚ ์•„๊ฐ

๐Ÿ›ก๏ธ ๋ฐฉ์–ด๋ฒ•:

  • ์ž…๋ ฅ๊ฐ’์„ ๋ช…๋ น์–ด์— ์ง์ ‘ ๋„ฃ์ง€ ์•Š๊ธฐ
  • ๊ผญ ๋„ฃ์–ด์•ผ ํ•  ๊ฒฝ์šฐ ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ๋กœ ํ•„ํ„ฐ๋ง!

5๏ธโƒฃ ํด๋ฆญ์žฌํ‚น (Clickjacking)

๐Ÿ“Œ ๊ฐœ๋…:
๋‚ด ์‚ฌ์ดํŠธ๋ฅผ ํˆฌ๋ช… iframe์œผ๋กœ ๋ฎ์–ด์”Œ์›Œ์„œ,
์‚ฌ์šฉ์ž๊ฐ€ ์—‰๋šฑํ•œ ๊ฑธ ํด๋ฆญํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ณต๊ฒฉ

์˜ˆ์‹œ ์‹œ๋‚˜๋ฆฌ์˜ค:

  • ์‚ฌ์šฉ์ž: โ€œ์ข‹์•„์š” ๋ฒ„ํŠผ ๋ˆŒ๋Ÿฌ์•ผ์ง€~โ€
  • ์‹ค์ œ๋ก  ํˆฌ๋ช…ํ•˜๊ฒŒ ๋ฎ์ธ "์ž๋™๊ฒฐ์ œ" ๋ฒ„ํŠผ ํด๋ฆญ๋จ

๐Ÿ›ก๏ธ ๋ฐฉ์–ด๋ฒ•:

  • HTTP ํ—ค๋”: X-Frame-Options: DENY
  • CSP: frame-ancestors 'none';

๐Ÿ“š ๊ธฐํƒ€ ํ•„์ˆ˜ ๋ณด์•ˆ ์ด์Šˆ 5์ข…

๊ณต๊ฒฉ๋ช…๊ฐœ๋…์˜ˆ์‹œ
์„ธ์…˜ ํ•˜์ด์žฌํ‚น์ฟ ํ‚ค ํƒˆ์ทจํ•ด์„œ ๋กœ๊ทธ์ธ ๋บ๊ธฐ๊ณต๊ณต Wi-Fi์—์„œ ๊ณต๊ฒฉ์ž๊ฐ€ ์„ธ์…˜ ๊ฐ€๋กœ์ฑ„๊ธฐ
์˜คํ”ˆ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธURL๋กœ ํ”ผ์‹ฑ ์‚ฌ์ดํŠธ๋กœ ์ด๋™/redirect?to=evil.com
๋””๋ ‰ํ† ๋ฆฌ ํŠธ๋ž˜๋ฒ„์„ค์„œ๋ฒ„ ๋‚ด๋ถ€ ํŒŒ์ผ ์—ด๋žŒ/../../etc/passwd
IDORURL๋กœ ๋‚จ ์ •๋ณด ๋ณด๊ธฐ/user?id=2 โ†’ ๋‹ค๋ฅธ ์‚ฌ๋žŒ ์ •๋ณด ์—ด๋žŒ
ํŒŒ์ผ ์ธํด๋ฃจ์ „์•…์„ฑํŒŒ์ผ ์„œ๋ฒ„์—์„œ ์‹คํ–‰include("evil.php")


๐Ÿ›ก๏ธ ๋ณด์•ˆ ์ฒดํฌ๋ฆฌ์ŠคํŠธ (์ง„์งœ ๊ผญ ๊ธฐ์–ตํ•˜์„ธ์š”!)

โœ… ์‚ฌ์šฉ์ž ์ž…๋ ฅ๊ฐ’์€ ๋ฌด์กฐ๊ฑด ๊ฒ€์ฆํ•˜๊ธฐ
โœ… ํ™”๋ฉด ์ถœ๋ ฅ ์‹œ escape ํ•„์ˆ˜ (<, >, " ๋“ฑ)
โœ… POST ์š”์ฒญ์— CSRF Token ๋ถ™์ด๊ธฐ
โœ… HTTPS ๊ธฐ๋ณธ! SSL ์ธ์ฆ์„œ ์‚ฌ์šฉํ•˜๊ธฐ
โœ… ๋ณด์•ˆ ํ—ค๋” (X-Frame-Options, Content-Security-Policy ๋“ฑ)
โœ… ์„œ๋ฒ„/๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ณด์•ˆ ์—…๋ฐ์ดํŠธ ์ฃผ๊ธฐ์  ํ™•์ธ
โœ… ๊ด€๋ฆฌ์ž ๊ธฐ๋Šฅ์€ IP ์ œํ•œ ๋˜๋Š” ๋กœ๊ทธ์ธ ์ œํ•œ


๐ŸŽฏ ๋งˆ๋ฌด๋ฆฌ:

"๋ณด์•ˆ์€ ๋‚ด๊ฐ€ ์•ˆ ๋šซ๋ ธ๋‹ค๊ณ  ๋์ด ์•„๋‹ˆ๋ผ, ์–ธ์ œ๋“  ๋šซ๋ฆด ์ˆ˜ ์žˆ๋‹ค๋Š” ์ƒ๊ฐ์—์„œ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค."

๋ณด์•ˆ์„ ์ง€ํ‚ค๋Š” ๊ฑด ์–ด๋ ต์ง€ ์•Š์•„์š”.
๋‹จ์ง€ โ€˜๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋†“์น˜๋Š” ๊ฒƒโ€™์ผ ๋ฟ์ด์ฃ .
์ด๋ฒˆ ๊ธ€๋กœ ์กฐ๊ธˆ์ด๋‚˜๋งˆ โ€œ๋ณด์•ˆ์— ๊ฐ•ํ•œ ๊ฐœ๋ฐœ์žโ€๊ฐ€ ๋˜์…จ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๐Ÿ’ช๐Ÿ’ป

profile
๐Ÿฑ ๋„์ฟ„์—์„œ ํ™œ๋™ ์ค‘์ธ ์›น ๊ฐœ๋ฐœ์ž ๐Ÿ‡ฏ๐Ÿ‡ต๐Ÿ’ป ๐Ÿง‘โ€๐Ÿ’ป ์ตœ๊ทผ์—๋Š” ์š”์ฆ˜IT์—์„œ ์ž‘๊ฐ€๋กœ๋„ ํ™œ๋™ ์ค‘์ž…๋‹ˆ๋‹ค! ๐Ÿ“ ์š”์ฆ˜IT ๊ธ€ ๋ชจ์Œ: https://yozm.wishket.com/magazine/@donghyuk65/

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

comment-user-thumbnail
2025๋…„ 5์›” 12์ผ

๋ณด์•ˆ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ž˜ ์ฝ๊ณ  ๊ฐ‘๋‹ˆ๋‹ค ๋‹ค์Œ์—๋„ ๋ฉ‹์ง„ ๊ธ€ ๊ธฐ๋Œ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹น!

1๊ฐœ์˜ ๋‹ต๊ธ€