XSS์ CSRF ํน์ง ๋ฐ ์ฐจ์ด
- -
์๋ ํ์ธ์ ์ค๋์ XSS์ CSRF๋ฅผ ์์๋ณด๊ณ
๋ ๊ณต๊ฒฉ์ ์ฐจ์ด์ ์ ์์๋ณด๋๋ก ํ ๊ป์!
-
XSS(Cross-Site Scripting)๋?
ํฌ๋ก์ค ์ฌ์ดํธ ์คํฌ๋ฆฝํ (์ฌ์ดํธ ๊ฐ ์คํฌ๋ฆฝํ )์ SQL injection๊ณผ ํจ๊ป ์น ์์์ ๊ฐ์ฅ ๊ธฐ์ด์ ์ธ ์ทจ์ฝ์ ๊ณต๊ฒฉ ๋ฐฉ๋ฒ์ ์ผ์ข ์ผ๋ก, ์ ์์ ์ธ ์ฌ์ฉ์๊ฐ ๊ณต๊ฒฉํ๋ ค๋ ์ฌ์ดํธ์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ฃ๋ ๊ธฐ๋ฒ์ ๋งํ๋ค. ์ฃผ๋ก ๋ค๋ฅธ ์น์ฌ์ดํธ์ ์ ๋ณด๋ฅผ ๊ตํํ๋ ์์ผ๋ก ์๋ํ๋ฏ๋ก ์ฌ์ดํธ ๊ฐ ์คํฌ๋ฆฝํ ์ด๋ผ๊ณ ๋ช ์นญํ๋ค.
์ด ์ทจ์ฝ์ ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฌ์ฉ์๋ก๋ถํฐ ์ ๋ ฅ ๋ฐ์ ๊ฐ์ ์ ๋๋ก ๊ฒ์ฌํ์ง ์๊ณ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ํ๋๋ฉฐ, ๊ณต๊ฒฉ์ ์ฑ๊ณตํ๋ฉด ์ฌ์ดํธ์ ์ ์ํ ์ฌ์ฉ์๋ ์ฝ์ ๋ ์ฝ๋๋ฅผ ์คํํ๊ฒ ๋๋ค. ๋ณดํต ์๋์น ์์ ํ๋์ ์ํ์ํค๊ฑฐ๋ ์ฟ ํค๋ ์ธ์ ํ ํฐ ๋ฑ์ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ํ์ทจํ๋ค.
ํฌ๋ก์ค ์ฌ์ดํธ ์คํฌ๋ฆฝํ
์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ณต๊ฒฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ๊ณต๊ฒฉ ๋ฐฉ๋ฒ์ด ๋จ์ํ๊ณ ๊ฐ์ฅ ๊ธฐ์ด์ ์ด์ง๋ง, ๋ง์ ์น์ฌ์ดํธ๋ค์ด XSS์ ๋ํ ๋ฐฉ์ด ์กฐ์น๋ฅผ ํด๋์ง ์์ ๊ณต๊ฒฉ์ ๋ฐ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ์ ๊ทผ ๊ฐ๋ฅํ ๊ฒ์ํ ๋ฑ์ ์ฝ๋๋ฅผ ์ฝ์
ํ๋ ๊ฒฝ์ฐ๋ ๋ง์ผ๋ฉฐ, ๊ฒฝ์ฐ์ ๋ฐ๋ผ์๋ ๋ฉ์ผ๊ณผ ๊ฐ์ ๋งค์ฒด, ์ฌ์ง์ด๋ ๋๋ค์์ ์ฝ๋๋ฅผ ์ฌ๊ธฐ๋ ํ๋ค.
๊ณต๊ฒฉ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ Stored XSS์ Reflected XSS๋ก ๋๋๋ค. Stored XSS๋ ์ฌ์ดํธ ๊ฒ์ํ์ด๋ ๋๊ธ, ๋๋ค์ ๋ฑ ์คํฌ๋ฆฝํธ๊ฐ ์๋ฒ์ ์ ์ฅ๋์ด ์คํ๋๋ ๋ฐฉ์์ด๊ณ , Reflected XSS๋ ๋ณดํต URL ํ๋ผ๋ฏธํฐ(ํนํ GET ๋ฐฉ์)์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ฃ์ด ์๋ฒ์ ์ ์ฅํ์ง ์๊ณ ๊ทธ ์ฆ์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋๋ ๋ฐฉ์์ด๋ค. ํ์ ๋ ๋ด์ฉ ๋๋ถ๋ถ์ Stored XSS๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. Reflected XSS์ ๊ฒฝ์ฐ ๋ธ๋ผ์ฐ์ ์์ฒด์์ ์ฐจ๋จํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ์๋์ ์ผ๋ก ๊ณต๊ฒฉ์ ์ฑ๊ณต์ํค๊ธฐ ์ด๋ ต๋ค.
-
Stored XSS์ Reflected XSS ์ฐจ์ด๋?
Stored XSS(์ ์ฅํ) | Reflected XSS(๋ฐ์ฌํ) |
โถ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ XSS๊ณต๊ฒฉ ์ ํ์ด๋ค. โถ ์ ์์ ํ๋ฌธx -> ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์ ๋ ฅํ๋ค.
โถ ์ฌ์ฉ์๊ฐ ๊ฒ์๋ฌผ์ ์ด๋์, ๊ณต๊ฒฉ์๊ฐ ์ ๋ ฅํด๋์ ์ ์ฑ ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋์ด ์ฌ์ฉ์์ ์ฟ ํค ์ ๋ณด๊ฐ ์ ์ถ๋๊ฑฐ๋, ์ ์ฑ ์คํฌ๋ฆฝํธ๊ฐ ๊ธฐํํ ๊ณต๊ฒฉ์ ๋นํ๊ฒ ๋๋ค.
โถ ์ ์ฅ๋(์ง์์ ) XSS๊ณต๊ฒฉ์ ๊ณต๊ฒฉ์๊ฐ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฑ์ฝ๋๋ฅผ ์ ์ฅํ๋๋ก ํ๋ ์๋ฒ์ด๋ค. ์๋ฒ์ ์ ์ฅ๋ ์ ์ฑ์ฝ๋๋ ์์คํ ์์ฒด๋ฅผ ๊ณต๊ฒฉ ํ ์ ์์ผ๋ฉฐ ์น ์ฑ ์ฌ์ฉ์ ์๋น์ ๋๋ ์ ์ฒด์ ์ ์ฑ ์ฝ๋๋ฅผ ์ ์กํ ์ ์๊ฒ ๋๋ค.
โถ ์ผ๋ฐ์ ์ธ ์๋ก๋ ๋ธ๋ก๊ทธ ๋๊ธ์ ์ ์ฑ์ฝ๋๋ฅผ ๊ฒ์ํ๋ ๊ฒ์ด ์๋ค. (ํด๋น ๋ธ๋ก๊ทธ๋ฅผ ๋ฐฉ๋ฌธํ๋ ์ฌ๋์ ๋๊ตฌ๋ ์ ์ฑ์ฝ๋์ ํผํด์๊ฐ ๋ ์ ์๋ค.)
โถ ๋ฐ๋ผ์ ์ง์์ (์ ์ฅํ) XSS ๊ฐ์ฅ ์ํํ XSS๊ณต๊ฒฉ ์ ํ์ด๋ค.
|
โถ URL์ ๋ณ์ ๋ถ๋ถ์ฒ๋ผ ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์ ๋ ฅํ๋ ๋์์ ๊ฒฐ๊ณผ๊ฐ ๋ฐ๋ก ์ ํด์ง๋ ๊ณต๊ฒฉ๊ธฐ๋ฒ์ด๋ค. โถ ๋ฐ์ฌ๋ XSS๋ ํผ์ฑ ๊ณต๊ฒฉ์ ์ผ๋ถ๋ก ์์ฃผ ์ฌ์ฉ๋๋ฉฐ ์ ์ฉํ๊ธฐ๋, ์ฐจ๋จํ๊ธฐ๋ ๊ฐ์ฅ ์ฝ๋ค.
โถ ๊ณต๊ฒฉ์๊ฐ HTTP ์์ฒญ์ ์ ์ฑ ์ฝํ ์ธ ๋ฅผ ์ฃผ์ ํ๋ฉด ๊ทธ ๊ฒฐ๊ณผ๊ฐ ์ฌ์ฉ์์๊ฒ "๋ฐ์ฌ๋๋" ํํ์ด๋ค.
โถ ๋งํฌ๋ฅผ ํด๋ฆญํ๋๋ก ํผํด์๋ฅผ ์์ด๊ณ , ์ ์ธํด ์ธ์ ์ ํ์ด์ฌํน ํ ์ ์๋ ๊ณต๊ฒฉ์ด๋ค.
โถ ๋ฐ์ฌ๋ XSS๋ ํผ์ฑ ๊ณต๊ฒฉ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ค.
โถ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ฑ์ฝ๋๋ฅผ ํผํด์์๊ฒ ๋ฐ์ฌํด ํผํด์์ ์น ๋ธ๋ผ์ฐ์ ์์ ์ ์ฑ์ฝ๋๋ฅผ ์คํํ ์ ์๋ค.
|
-
CSRF(Cross-Site Request Fogery)๋?
์ฌ์ดํธ ๊ฐ ์์ฒญ ์์กฐ(๋๋ ํฌ๋ก์ค ์ฌ์ดํธ ์์ฒญ ์์กฐ, CSRF, XSRF)๋ ์น ์ฌ์ดํธ ์ทจ์ฝ์ ๊ณต๊ฒฉ์ ํ๋๋ก,
์ฌ์ฉ์๊ฐ ์์ ์ ์์ง์๋ ๋ฌด๊ดํ๊ฒ ๊ณต๊ฒฉ์๊ฐ ์๋ํ ํ์(์์ , ์ญ์ , ๋ฑ๋ก ๋ฑ)๋ฅผ ํน์ ์น์ฌ์ดํธ์ ์์ฒญํ๊ฒ ํ๋ ๊ณต๊ฒฉ์ ๋งํ๋ค.
์ ๋ช ๊ฒฝ๋งค ์ฌ์ดํธ์ธ ์ฅ์ ์์ ๋ฐ์ํ ๊ฐ์ธ์ ๋ณด ์ ์ถ ์ฌ๊ฑด์์ ์ฌ์ฉ๋ ๊ณต๊ฒฉ ๋ฐฉ์ ์ค ํ๋๋ค.
์ฌ์ดํธ ๊ฐ ์คํฌ๋ฆฝํ (XSS)์ ์ด์ฉํ ๊ณต๊ฒฉ์ด ์ฌ์ฉ์๊ฐ ํน์ ์น์ฌ์ดํธ๋ฅผ ์ ์ฉํ๋ ์ ์ ๋ ธ๋ฆฐ ๊ฒ์ด๋ผ๋ฉด, ์ฌ์ดํธ๊ฐ ์์ฒญ ์์กฐ๋ ํน์ ์น์ฌ์ดํธ๊ฐ ์ฌ์ฉ์์ ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ์ ์ฉํ๋ ์ํ๋ฅผ ๋ ธ๋ฆฐ ๊ฒ์ด๋ค. ์ผ๋จ ์ฌ์ฉ์๊ฐ ์น์ฌ์ดํธ์ ๋ก๊ทธ์ธํ ์ํ์์ ์ฌ์ดํธ๊ฐ ์์ฒญ ์์กฐ ๊ณต๊ฒฉ ์ฝ๋๊ฐ ์ฝ์ ๋ ํ์ด์ง๋ฅผ ์ด๋ฉด, ๊ณต๊ฒฉ ๋์์ด ๋๋ ์น์ฌ์ดํธ๋ ์์กฐ๋ ๊ณต๊ฒฉ ๋ช ๋ น์ด ๋ฏฟ์ ์ ์๋ ์ฌ์ฉ์๋ก๋ถํฐ ๋ฐ์ก๋ ๊ฒ์ผ๋ก ํ๋จํ๊ฒ ๋์ด ๊ณต๊ฒฉ์ ๋ ธ์ถ๋๋ค.
CSRF๋ ๊ณต๊ฒฉ์๊ฐ ์ฌ์ฉ์์ ์ปดํจํฐ๋ฅผ ๊ฐ์ผ์ํค๊ฑฐ๋ ์ฌ์ดํธ ํดํน์ ํด์ ์ด๋ค์ง๋ ๊ณต๊ฒฉ์ด ์๋๋ฏ๋ก ๊ณต๊ฒฉ์ด ์ฑ๊ณตํ๋ ค๋ฉด ๋ค์ ์กฐ๊ฑด์ ๋ง์กฑํด์ผ ํ๋ค.
1. ์์กฐ ์์ฒญ์ ์ ์กํ๋ ์๋น์ค(ex : ํ์ด์ค๋ถ)์ ํฌ์์๊ฐ ๋ก๊ทธ์ธ ์ํ์ฌ์ผํจ.
2. ํฌ์์๋ ๊ณต๊ฒฉ์๊ฐ ๋ง๋ ํผ์ฑ ์ฌ์ดํธ์ ์ ์ํด์ผํจ.
-
XSS vs CSRF
โถ XSS(Cross-Site Scripting) | โถ CSRF(Cross-Site Request Forgery) |
โ ๊ฐ์ : ์
์ฑ ์คํฌ๋ฆฝํธ๊ฐ ํด๋ผ์ด์ธํธ์์ ์คํ๋จ โ ๊ณต๊ฒฉ ๋์ : ํด๋ผ์ด์ธํธ โ ๋ชฉ์ : ์ฟ ํคใ์ธ์ ๊ฐ์ทจ, ์น์ฌ์ดํธ ๋ณ์กฐ ๋ฑ |
โ ๊ฐ์ : ๊ถํ์ ๋์ฉ๋นํ ํด๋ผ์ด์ธํธ๊ฐ ๊ฐ์ง ์์ฒญ์ ์๋ฒ์ ์ ์ก |
XSS๊ณต๊ฒฉ๊ณผ CSRF๋ ์ฌ์ฉ์(ํผํด์)์ ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ชฉํ๋ก ํ๋ ๋น์ทํ ๊ณต๊ฒฉ์ด์ง๋ง
XSS๋ ์ฌ์ดํธ๋ณ์กฐ๋ ๋ฐฑ๋์ด๋ฅผ ํตํด ํด๋ผ์ด์ธํธ์ ๋ํ ์ ์ฑ๊ณต๊ฒฉ์ ํ๊ณ ,
์ธ์ฆ๋ ์ธ์ ์ด ์์ด๋ ๊ณต๊ฒฉ์ ํ ์ ์์ผ๋ฉฐ, ์๋ฐ ์คํฌ๋ฆฝํธ๋ฅผ ์คํ ์ํค๋ ๊ณต๊ฒฉ.
CSRF๋ ์์ฒญ์ ์์กฐํ์ฌ ์ฌ์ฉ์์ ๊ถํ์ ์ด์ฉํด ์๋ฒ์ ๋ํ ์ ์ฑ๊ณต๊ฒฉ์ ํ๊ณ ,
์ธ์ฆ๋ ์ธ์ ์ ์ ์ฉํ๋ฉฐ, ํน์ ํ ํ๋์ ์คํ ์ํค๋ ๊ณต๊ฒฉ์ด๋ผ๋ ์ ์์
๋๊ฐ์ง ๊ณต๊ฒฉ์ ์ฐจ์ด๊ฐ ์๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ ๊ณต๊ฒฉ์ ๋ฐฉ์ง๋์ฑ ์ ๋ํด์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
XSS์ ๋ฐฉ์ง ๋์ฑ | CSRF์ ๋ฐฉ์ง ๋์ฑ |
1. ์ฟ ํค์ ์ค์ํ ์ ๋ณด๋ฅผ ๋ด์ง ์๊ณ ์๋ฒ์ ์ค์์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๋ฐฉ๋ฒ 2. ์ ๋ณด๋ฅผ ์ํธํ ํ๋ ๋ฐฉ๋ฒ
3. httponly ์์ฑ on (์๋ฐ์คํฌ๋ฆฝํธ์ document.cookie๋ฅผ ์ด์ฉํด์ ์ฟ ํค์ ์ ์ํ๋ ๊ฒ์ ๋ง๋ ์ต์ ์ผ๋ก, ์ฟ ํค๋ฅผ ํ์ณ๊ฐ๋ ํ์๋ฅผ ๋ง๊ธฐ ์ํ ๋ฐฉ๋ฒ์ด๋ค.)
4. Secure coding (str_replace <์นํํจ์๋ก XSS๋ฐฉ์ง ๋์ฑ ์ด์ง๋ง ๋ฏธํกํ ๋ถ๋ถ์ด ์๋ค -> url encoding> htmlspecialchars <html ์ํฐํฐ๋ก ๋ณํํด์ค> ..๋ฑ ๋ณด์๊ณผ ๊ด๋ จ๋ ํจ์๋ฅผ ์ฌ์ฉํ๋ค.)
โถ Encoding : ํน์ ํ๋ซํผ์์ ๋ฌธ์๋ฅผ ํํํ๊ธฐ ์ํ ๊ท์ฝ |
1. Referrer ๊ฒ์ฆ (Back -end ๋จ์์ request ์ referrer์ ํ์ธํ์ฌ domain์ด ์ผ์นํ๋์ง ๊ฒ์ฆํ๋ ๋ฐฉ๋ฒ)
2. Security Token ์ฌ์ฉ
(Reffer๊ฒ์ฆ์ด ๋ถ๊ฐํ ํ๊ฒฝ์ผ ์, Security Token์ ํ์ฉํ๋ค. ์ฌ์ฉ์ ์ธ์ ์ ์์์ ๋์ ๊ฐ์ ์ ์ฅํ๊ณ , ์ฌ์ฉ์์ ์์ฒญ๋ง๋ค ํด๋น ๋์ ๊ฐ์ ํฌํจ ์์ผ ์ ์กํ๋ค. ์ดํ Back -end ๋จ์์ ์์ฒญ์ ๋ฐ์ ๋๋ง๋ค ์ธ์ ์ ์ ์ฅ๋ ํ ํฐ ๊ฐ๊ณผ ์์ฒญ ํ๋ผ๋ฏธํฐ์ ์ ๋ฌ๋๋ ํ ํฐ ๊ฐ์ด ์ผ์นํ์ง ๊ฒ์ฆํ๋ ๋ฐฉ๋ฒ)
๋ ๋ฐฉ๋ฒ ๋ชจ๋ ๊ฐ์ ๋๋ฉ์ธ ๋ด์ XSS์ทจ์ฝ์ ์ด ์๋ค๋ฉด CSRF ๊ณต๊ฒฉ์ ์ทจ์ฝ ํด์ง ์ ์๋ค.์ถ์ฒ : https://dlsdn73.tistory.com/634 |
์ด๋ ๊ฒ XSS์ CSRF ๊ณต๊ฒฉ์ ์์๋ณด์๋๋ฐ์
์ดํด๊ฐ ์ข ๋์ จ๋์!?
ํน์ ๋ถ์กฑํ ์ ์ด์๊ฑฐ๋ ์ค๋ฅ๊ฐ ์๋ ๋ถ๋ถ์ ์ธ์ ๋ ์ง ๋ง์ํด์ฃผ์ธ์!
๋ค๋ค ์ด๊ณต ํ์ธ์!~
'IT & Security > Web' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
VMware ํ๊ฒฝ์์ kali-Linux ์ค์นํ๊ธฐ(2) (0) | 2020.03.18 |
---|---|
VMware ํ๊ฒฝ์์ kali-Linux ์ค์นํ๊ธฐ(1) (0) | 2020.03.18 |
์ฟ ํค์ ์ธ์ ์ ์ฐจ์ด์ (0) | 2020.02.18 |
Web ๊ธฐ์ด ๊ณต๋ถ - HTTP (0) | 2020.02.18 |
์์คํ ๊ณต๊ฐ ๊ฐ์ฌํฉ๋๋ค