๐Ÿ”ฌComputer Science/๋„คํŠธ์›Œํฌ

TIL) ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„๋‘๋ฉด ์ข‹์„ ์›น ๊ณต๊ฒฉ (SQL injection, XSS, CSRF, Clickjacking )

hellohailie 2022. 7. 15. 10:44

 

OWASP (The Open Web Application Security Project)

์ „์„ธ๊ณ„์˜ ๋ณด์™„ ์ „๋ฌธ๊ฐ€๋“ค์ด ์›น์˜ ๋ณด์™„์— ๋Œ€ํ•œ ํ‘œ์ค€์„ ์ •์˜ํ•˜๊ณ  ์ด์— ๋Œ€ํ•ด ๊ธฐ์—…๊ณผ ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ํšจ์œจ์ ์ธ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ์˜คํ”ˆ์†Œ์Šค ์ปค๋ฎค๋‹ˆํ‹ฐ

 

OWASP TOP 10 : 3๋…„ ์ •๋„์˜ ์ฃผ๊ธฐ๋กœ ๋ฐœํ‘œํ•˜๋Š” ์›น 10๋Œ€ ์ทจ์•ฝ์ 

 

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

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

 

๊ณต๊ฒฉ ์‹œ๋‚˜๋ฆฌ์˜ค

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

2. ์„œ๋ฒ„๊ฐ€ ํ•ด๋‹น SQL๋ฌธ์„ ๊ธฐ์กด SQL์— ์‚ฝ์ž…ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ดํ„ฐ์Šค ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋ƒ„

 

๐Ÿ‘‡ ์ •์ƒ

SELECT * 
FROM users
WHERE auth='admin'
AND id='happyhailie';

๐Ÿ‘‡ ๋น„์ •์ƒ

SELECT * 
FROM users
WHERE auth='admin'
AND id='' OR '1'='1';

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

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

 

SQL injection ๊ณต๊ฒฉ์— ๋Œ€ํ•œ ๋Œ€์‘ ๋ฐฉ์•ˆ

1. ์ž…๋ ฅ(์š”์ฒญ) ๊ฐ’ ๊ฒ€์ฆ

ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ* ๋ฐฉ์‹์œผ๋กœ ํ‚ค์›Œ๋“œ๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ์น˜ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•

 

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

 

2. Prepared Statement ๊ตฌ๋ฌธ ์‚ฌ์šฉ

 

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

 

3. Error Message ๋…ธ์ถœ ๊ธˆ์ง€

 

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

 


2. XSS ๊ณต๊ฒฉ (Cross-Site Scripting, ์‚ฌ์ดํŠธ ๊ฐ„ ์Šคํฌ๋ฆฝํŒ…) = ๊ณต๊ฒฉ์ž๊ฐ€ ์›น ์‚ฌ์ดํŠธ์— ์•…์˜์ ์ธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹ฌ์–ด๋†“๋Š” ํ–‰์œ„

์ฃผ๋กœ ํด๋ฆญ์„ ์œ ๋„ํ•˜๋Š” ๊ธ€์„ ์ž‘์„ฑํ•˜๊ณ , ํ•ด๋‹น ๊ธ€์„ ํด๋ฆญํ•˜๋ฉด ๊ณต๊ฒฉ์ž๊ฐ€ ์‹ฌ์–ด๋†“์€ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜์–ด ์›น ์‚ฌ์ดํŠธ ์ด์šฉ์ž์—๊ฒŒ ํ”ผํ•ด๋ฅผ ์ค€๋‹ค. 

์‚ฌ์šฉ์ž์˜ ์ฟ ํ‚ค ๊ฐ™์€ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ํƒˆ์ทจํ•ด์„œ CSRF ๋“ฑ ๋‹ค์–‘ํ•œ ๊ณต๊ฒฉ์— ํ™œ์šฉํ•˜๊ธฐ๋„ ํ•จ. (๊ณต๊ฒฉ ๋Œ€์ƒ ํด๋ผ์ด์–ธํŠธ)

 

XSS ๊ณต๊ฒฉ ์œ ํ˜•

1. Stored XSS = ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์„œ๋ฒ„์— ์ €์žฅ๋˜์–ด ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ”ผํ•ด๋ฅผ ์ค„ ์ˆ˜ ์žˆ๋Š” ์œ ํ˜• (์ง€์†์  ๊ธฐ๋ฒ•)

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

2. Reflected XSS = URL ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ์œ ํ˜• (๋น„ ์ง€์†์  ๊ธฐ๋ฒ•)

 

์ด ์Šคํฌ๋ฆฝํŠธ๋Š” ์„œ๋ฒ„์— ์ €์žฅ๋˜์ง€ ์•Š์œผ๋ฉฐ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ง€์ •๋œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋‚˜ํƒ€๋‚˜๋Š” ์ทจ์•ฝ์ ์„ ์ด์šฉํ•œ๋‹ค. 

  1. ๊ณต๊ฒฉ์ž๋Š” URL ํŒŒ๋ผ๋ฏธํ„ฐ์— ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ž‘์„ฑ๋œ ๋งํฌ๋กœ ์‚ฌ์šฉ์ž์˜ ํด๋ฆญ์„ ์œ ๋„ํ•œ๋‹ค. ์ฃผ๋กœ ํ”ผ์‹ฑ(e.g. ๋ฐฐ์†กํ˜„ํ™ฉ ํ™•์ธ ๋ฌธ์ž)์— ์‚ฌ์šฉ๋จ.
  2. ํ”ผํ•ด์ž๊ฐ€ ๋งํฌ๋ฅผ ํด๋ฆญํ•˜๋ฉด ์—ด๋ฆฌ๊ธธ ์˜ˆ์ƒํ•˜๋Š” ์›น ์‚ฌ์ดํŠธ๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์›น ์‚ฌ์ดํŠธ(e.g. ์ทจ์•ฝ์ ์ด ์žˆ๋Š” ๊ฒ€์ƒ‰์—”์ง„)์˜ ๋งํฌ๋กœ ์—ฐ๊ฒฐ๋œ๋‹ค. ์ฆ‰, ์š”์ฒญ์ด ๋ณด๋‚ด์ง„๋‹ค.
  3. ํ•ด๋‹น ์›น ์„œ๋ฒ„๋Š” URL์— ๋‹ด๊ธด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ฐ˜์‚ฌ(reflect)ํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ(ํ”ผํ•ด์ž)์— ์‘๋‹ต์„ ์ „์†กํ•œ๋‹ค.
  4. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๊ณต๊ฒฉ์ž๊ฐ€ ์‹ฌ์€ ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ทธ๋Œ€๋กœ ์‹คํ–‰ํ•œ๋‹ค. alert(”Warning!”)๊ณผ ๊ฐ™์ด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋‹จ์ˆœํžˆ ์–ด๋–ค ์‹คํ–‰์„ ํ•˜๋„๋ก ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๋ณดํ†ต์€ ์ฟ ํ‚ค ๋“ฑ ๋ฏผ๊ฐํ•œ ๊ฐœ์ธ ์ •๋ณด๋ฅผ ํƒˆ์ทจํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์‹ฌ์–ด ๋†“๋Š”๋‹ค.

XSS ๊ณต๊ฒฉ ์— ๋Œ€ํ•œ ๋Œ€์‘ ๋ฐฉ์•ˆ

1. ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ์˜ ์ž…๋ ฅ์„ ๋ง‰๊ธฐ

 

- ์ž…๋ ฅ๋œ ๊ฐ’์— ํƒœ๊ทธ(<>)์™€ ๊ฐ™์€ ํŠน์ˆ˜๋ฌธ์ž๊ฐ€ ์ž…๋ ฅ๋˜์ง€ ์•Š๊ฒŒ ํ•˜๊ฑฐ๋‚˜, ์ €์žฅ ์š”์ฒญ์ด ์˜จ ๊ธ€์— ํƒœ๊ทธ(<>)์™€ ๊ฐ™์€ ํŠน์ˆ˜๋ฌธ์ž๊ฐ€ ์žˆ๋Š”์ง€ ๊ฒ€์ฆํ•œ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์ธก์—์„  ์œ ์ €๋กœ๋ถ€ํ„ฐ ์ž…๋ ฅ์„ ๋ฐ›๋Š” ๊ณณ์— innerHTML ๋Œ€์‹  textContent ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๋‹ค.

- <๋Š” &lt; ๋กœ ์น˜ํ™˜ํ•˜๊ณ , >๋Š” &gt;๋กœ ์น˜ํ™˜ํ•˜๊ณ  ์ €์žฅํ•˜์—ฌ HTML์˜ ํƒœ๊ทธ๋กœ ์ธ์‹๋˜์ง€ ์•Š์•„ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๊ฒŒ ํ•˜๊ธฐ.

 

2. ์ฟ ํ‚ค ์„ค์ • ํ™•์ธํ•˜๊ธฐ (httpOnly)

 

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

 

3. ์ฟ ํ‚ค์— ๋ฏผ๊ฐํ•œ ์ •๋ณด ๋‹ด์ง€ ์•Š๊ธฐ

- ๋ฏผ๊ฐํ•œ ์ •๋ณด๋Š” ์„œ๋ฒ„์—์„œ ๊ด€๋ฆฌํ•˜๊ธฐ

- ์•”ํ˜ธํ™”ํ•ด์„œ ์‚ฌ์šฉํ•˜๊ธฐ


3. CSRF ๊ณต๊ฒฉ (cross site request forgery)

๋‹ค๋ฅธ ์˜ค๋ฆฌ์ง„์˜ ๊ณต๊ฒฉ์ž๊ฐ€ ์‚ฌ์šฉ์ž์˜ ๊ถŒํ•œ์„ ํƒˆ์ทจํ•˜์—ฌ ์„œ๋ฒ„์— ๊ฐ€์งœ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค. (๊ณต๊ฒฉ ๋Œ€์ƒ ์„œ๋ฒ„)

(๊ณต๊ฒฉ์ž๋Š” ์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค. )

 

์˜ฅ์…˜ ํ•ดํ‚น ์‚ฌ๊ฑด

<img src="http://auction.com/changeUserAcoount?id=admin&password=admin" width="0" height="0">
  1. ์˜ฅ์…˜ ๊ด€๋ฆฌ์ž๊ฐ€ ๊ด€๋ฆฌ ๊ถŒํ•œ์„ ๊ฐ€์ง€๊ณ (์ด๋ฏธ ์œ ํšจํ•œ ์ฟ ํ‚ค ๋ฐœ๊ธ‰๋œ ์ƒํƒœ๋กœ) ๋ฉ”์ผ์„ ์กฐํšŒํ•œ๋‹ค.
  2. ํ•ด์ปค๋Š” ์œ„์™€ ๊ฐ™์ด ํƒœ๊ทธ๊ฐ€ ๋“ค์–ด๊ฐ„ ์ฝ”๋“œ๊ฐ€ ๋‹ด๊ธด ์ด๋ฉ”์ผ์„ ๋ณด๋‚ธ๋‹ค. ๋‹จ, ๊ด€๋ฆฌ์ž๋Š” ์ด๋ฏธ์ง€ ํฌ๊ธฐ๊ฐ€ 0์ด๋ฏ€๋กœ ์ด๋ฏธ์ง€๊ฐ€ ์žˆ๋Š”์ง€ ๋ˆˆ์น˜๋ฅผ ์ฑ„์ง€ ๋ชปํ•œ๋‹ค.
  3. ๊ด€๋ฆฌ์ž๊ฐ€ ๋ฉ”์ผ์„ ์—ด๋ฉด ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ๋ฐ›์•„์˜ค๊ธฐ ์œ„ํ•ด URL์ด ์—ด๋ฆฐ๋‹ค. 
  4. ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ํ•ด์ปค๊ฐ€ ์›ํ•˜๋Š” ๋Œ€๋กœ ๊ด€๋ฆฌ์ž์˜ ๊ณ„์ •์ด id์™€ pw ๋ชจ๋‘ admin์ธ ๊ณ„์ •์œผ๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค.

CSRF ๊ณต๊ฒฉ ๋Œ€์‘ ๋ฐฉ์•ˆ

- CSRF ํ† ํฐ ์‚ฌ์šฉํ•˜๊ธฐ

์„œ๋ฒ„ ์ธก์—์„œ CSRF ๊ณต๊ฒฉ์— ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•œ ๋ฌธ์ž์—ด์„ ์œ ์ €์˜ ๋ธŒ๋ผ์šฐ์ €์™€ ์›น ์•ฑ์—๋งŒ ์ œ๊ณตํ•œ๋‹ค. 

 

- Same-site cookie ์‚ฌ์šฉํ•˜๊ธฐ

๊ฐ™์€ ๋„๋ฉ”์ธ์—์„œ๋งŒ ์„ธ์…˜/์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 


4. Clickjacking ๊ณต๊ฒฉ = ์‚ฌ์šฉ์ž๊ฐ€ ์˜๋„ํ•œ ํด๋ฆญ ๋Œ€์ƒ์ด ์•„๋‹Œ ๋‹ค๋ฅธ ๋Œ€์ƒ์„ ํด๋ฆญํ•˜๋„๋ก ์†์ด๋Š” ๊ณต๊ฒฉ ๊ธฐ๋ฒ•

  1. ์ด๋ฉ”์ผ ํ˜น์€ ๊ด‘๊ณ  ๋ฌธ๊ตฌ ๋“ฑ ์‚ฌ์šฉ์ž์˜ ํด๋ฆญ์„ ์œ ๋„ํ•˜์—ฌ ๋ณธ๋ž˜ ์›น ํŽ˜์ด์ง€์™€ ๋™์ผํ•œ ํ”ผ์‹ฑ ์‚ฌ์ดํŠธ๋กœ ์ ‘๊ทผํ•˜๋„๋ก ํ•œ๋‹ค.
  2. ์ •์ƒ์ ์ธ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ์›น ์‚ฌ์ดํŠธ์™€ ๋™์ผํ•˜๊ฒŒ ์ƒ๊ฒผ์ง€๋งŒ, iframe ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด ๋ณด์ด์ง€ ์•Š๋Š” ๋ฒ„ํŠผ์„ ๋ฐฐ์น˜ํ•œ๋‹ค. iframe ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•˜๋ฉด ์ผ๋ฐ˜ HTML ํ™”๋ฉด๋ณด๋‹ค ๋” ๋†’์€ ๋ ˆ์ด์–ด์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๊ฐ€ ํด๋ฆญํ•œ๋‹ค๊ณ  ์ธ์ง€ํ•˜๋Š” ๋ฒ„ํŠผ๊ณผ๋Š” ๋‹ค๋ฅธ ๋ฒ„ํŠผ์ด ๋ˆŒ๋ฆฌ๊ฒŒ ๋œ๋‹ค.
  3. ํ•ด๋‹น ํด๋ฆญ์œผ๋กœ ์ธํ•ด ๊ณต๊ฒฉ์ž๋Š” ์‚ฌ์šฉ์ž์˜ ๊ฐœ์ธ์ •๋ณด๊ฐ€ ํƒˆ์ทจํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž์˜ ์ปดํ“จํ„ฐ ์ œ์–ด๊ถŒ์„ ํš๋“ํ•œ๋‹ค.

 

Clickjacking ๋Œ€์‘ ๋ฐฉ์•ˆ

1. X-Frame-Options

 

X-Frame-Options ํ—ค๋”์— ์„ค์ •ํ•œ ์˜ต์…˜์— ๋”ฐ๋ผ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์›น ํŽ˜์ด์ง€ ํ™”๋ฉด์˜ <iframe> ์˜ ๋ Œ๋”๋ง ์—ฌ๋ถ€๋ฅผ ์ œํ•œํ•œ๋‹ค. 

 

2. ์ฝ˜ํ…์ธ  ๋ณด์•ˆ ์ •์ฑ…(Content Security Policy, CSP)

 

์›น ์‚ฌ์ดํŠธ ์†Œ์œ ์ž๋“ค์ด ์ฝ˜ํ…์ธ ์˜ ์ถœ์ฒ˜(์˜ค๋ฆฌ์ง„)๋ฅผ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋„๋ก ํ‘œ์ค€ ๋ฐฉ์‹์„ ์ œ๊ณตํ•˜์—ฌ ์™ธ๋ถ€์˜ ์•…์˜์ ์ธ ์Šคํฌ๋ฆฝํŠธ๋‚˜ ๋ฐ์ดํ„ฐ ์‚ฝ์ž… ๊ณต๊ฒฉ์„ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค.