# CSRF & XSS
# CSRF
Cross Site Request Forgery
์น ์ดํ๋ฆฌ์ผ์ด์ ์ทจ์ฝ์ ์ค ํ๋๋ก, ์ธํฐ๋ท ์ฌ์ฉ์๊ฐ ์์ ์ ์์ง์๋ ๋ฌด๊ดํ๊ฒ ๊ณต๊ฒฉ์๊ฐ ์๋ํ ํ์ (modify, delete, register ๋ฑ)๋ฅผ ํน์ ํ ์น์ฌ์ดํธ์ requestํ๋๋ก ๋ง๋๋ ๊ณต๊ฒฉ์ ๋งํ๋ค.
์ฃผ๋ก ํด์ปค๋ค์ด ๋ง์ด ์ด์ฉํ๋ ๊ฒ์ผ๋ก, ์ ์ ์ ๊ถํ์ ๋์ฉํด ์ค์ํ ๊ธฐ๋ฅ์ ์คํํ๋๋ก ํ๋ค.
์ฐ๋ฆฌ๊ฐ ์ค์ํ์์ CSRF ๊ณต๊ฒฉ์ ๋ณผ ์ ์๋ ๊ฑด, ํด์ปค๊ฐ ์ฌ์ฉ์์ SNS ๊ณ์ ์ผ๋ก ๊ด๊ณ ์ฑ ๊ธ์ ์ฌ๋ฆฌ๋ ๊ฒ์ด๋ค.
์ ํํ ๋งํ๋ฉด, CSRF๋ ํด์ปค๊ฐ ์ฌ์ฉ์ ์ปดํจํฐ๋ฅผ ๊ฐ์ผ์๊ฑฐ๋ ์๋ฒ๋ฅผ ํดํนํด์ ๊ณต๊ฒฉํ๋ ๊ฒ์ด ์๋๋ค. CSRF ๊ณต๊ฒฉ์ ์๋์ ๊ฐ์ ์กฐ๊ฑด์ด ๋ง์กฑํ ๋ ์คํ๋๋ค.
- ์ฌ์ฉ์๊ฐ ํด์ปค๊ฐ ๋ง๋ ํผ์ฑ ์ฌ์ดํธ์ ์ ์ํ ๊ฒฝ์ฐ
- ์์กฐ ์์ฒญ์ ์ ์กํ๋ ์๋น์ค์ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ์ ํ ์ํฉ
๋ณดํต ์๋ ๋ก๊ทธ์ธ์ ํด๋ ๊ฒฝ์ฐ์ ์ด๋ฐ ํผ์ฑ ์ฌ์ดํธ์ ์ ์ํ๊ฒ ๋๋ฉด์ ํผํด๋ฅผ ์ ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ๋ํ, ํด์ปค๊ฐ XSS ๊ณต๊ฒฉ์ ์ฑ๊ณต์ํจ ์ฌ์ดํธ๋ผ๋ฉด, ํผ์ฑ ์ฌ์ดํธ๊ฐ ์๋๋๋ผ๋ CSRF ๊ณต๊ฒฉ์ด ์ด๋ฃจ์ด์ง ์ ์๋ค.
# ๋์ ๊ธฐ๋ฒ
# ๋ฆฌํผ๋ฌ(Refferer) ๊ฒ์ฆ
๋ฐฑ์๋ ๋จ์์ Refferer ๊ฒ์ฆ์ ํตํด ์น์ธ๋ ๋๋ฉ์ธ์ผ๋ก ์์ฒญ์์๋ง ์ฒ๋ฆฌํ๋๋ก ํ๋ค.
# Security Token ์ฌ์ฉ
์ฌ์ฉ์์ ์ธ์ ์ ์์์ ๋์ ๊ฐ์ ์ ์ฅํ๊ณ , ์ฌ์ฉ์์ ์์ฒญ์ ํด๋น ๊ฐ์ ํฌํจํ์ฌ ์ ์ก์ํจ๋ค. ๋ฐฑ์๋ ๋จ์์๋ ์์ฒญ์ ๋ฐ์ ๋ ์ธ์ ์ ์ ์ฅ๋ ํ ํฐ๊ฐ๊ณผ ์์ฒญ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌ๋ฐ๋ ํ ํฐ ๊ฐ์ด ์ผ์นํ๋ ์ง ๊ฒ์ฆ ๊ณผ์ ์ ๊ฑฐ์น๋ ๋ฐฉ๋ฒ์ด๋ค.
ํ์ง๋ง, XSS์ ์ทจ์ฝ์ ์ด ์๋ค๋ฉด ๊ณต๊ฒฉ์ ๋ฐ์ ์๋ ์๋ค.
# XSS
Cross Site Scription
CSRF์ ๊ฐ์ด ์น ์ดํ๋ฆฌ์ผ์ด์ ์ทจ์ฝ์ ์ค ํ๋๋ก, ๊ด๋ฆฌ์๊ฐ ์๋ ๊ถํ์ด ์๋ ์ฌ์ฉ์๊ฐ ์น ์ฌ์ดํธ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฝ์ ํ๋ ๊ณต๊ฒฉ ๊ธฐ๋ฒ์ ๋งํ๋ค.
์ ์์ ์ผ๋ก ์คํฌ๋ฆฝํธ๋ฅผ ์ฝ์ ํ์ฌ ์ด๋ฅผ ์ด๋ํ ์ฌ์ฉ์์ ์ฟ ํค๊ฐ ํด์ปค์๊ฒ ์ ์ก์ํค๋ฉฐ, ์ด ํ์ทจํ ์ฟ ํค๋ฅผ ํตํด ์ธ์ ํ์ด์ฌํน ๊ณต๊ฒฉ์ ํ๋ค. ํด์ปค๋ ์ธ์ ID๋ฅผ ๊ฐ์ง ์ฟ ํค๋ก ์ฌ์ฉ์์ ๊ณ์ ์ ๋ก๊ทธ์ธ์ด ๊ฐ๋ฅํด์ง๋ ๊ฒ์ด๋ค.
๊ณต๊ฒฉ ์ข ๋ฅ๋ก๋ ์ง์์ฑ, ๋ฐ์ฌํ, DOM ๊ธฐ๋ฐ XSS ๋ฑ์ด ์๋ค.
- ์ง์์ฑ : ๋ง ๊ทธ๋๋ก ์ง์์ ์ผ๋ก ํผํด๋ฅผ ์ ํ๋ ์ ํ์ผ๋ก, XSS ์ทจ์ฝ์ ์ด ์กด์ฌํ๋ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ์ ์ฑ ์คํฌ๋ฆฝํธ๋ฅผ ์ฝ์ ํ์ฌ ์ด๋ํ ์ฌ์ฉ์์ ์ฟ ํค๋ฅผ ํ์ทจํ๊ฑฐ๋ ๋ฆฌ๋ค์ด๋ ์ ์ํค๋ ๊ณต๊ฒฉ์ ํ๋ค. ์ด๋ ์ฝ์ ๋ ์คํฌ๋ฆฝํธ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ์์ผ ์ง์์ ์ผ๋ก ๊ณต๊ฒฉ์ ํ๊ธฐ ๋๋ฌธ์ Persistent XSS๋ผ๊ณ ๋ถ๋ฆฐ๋ค.
- ๋ฐ์ฌํ : ์ฌ์ฉ์์๊ฒ ์ ๋ ฅ ๋ฐ์ ๊ฐ์ ์๋ฒ์์ ๋๋๋ ค ์ฃผ๋ ๊ณณ์์ ๋ฐ์ํ๋ค. ๊ณต๊ฒฉ์๋ ์ ์ ์คํฌ๋ฆฝํธ์ ํจ๊ป URL์ ์ฌ์ฉ์์๊ฒ ๋๋ฅด๋๋ก ์ ๋ํ๊ณ , ๋๋ฅธ ์ฌ์ฉ์๋ ์ด ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋์ด ๊ณต๊ฒฉ์ ๋นํ๊ฒ ๋๋ ์ ํ์ด๋ค.
- DOM ๊ธฐ๋ฐ : ์ ์ฑ ์คํฌ๋ฆฝํธ๊ฐ ํฌํจ๋ URL์ ์ฌ์ฉ์๊ฐ ์์ฒญํ๊ฒ ๋๋ฉด์ ๋ธ๋ผ์ฐ์ ๋ฅผ ํด์ํ๋ ๋จ๊ณ์์ ๋ฐ์ํ๋ ๊ณต๊ฒฉ์ด๋ค. ์ด ์คํฌ๋ฆฝํธ๋ก ์ธํด ํด๋ผ์ด์ธํธ ์ธก ์ฝ๋๊ฐ ์๋ ์๋์ ๋ค๋ฅด๊ฒ ์คํ๋๋ค. ์ด๋ ๋ค๋ฅธ XSS ๊ณต๊ฒฉ๊ณผ๋ ๋ฌ๋ฆฌ ์๋ฒ ์ธก์์ ํ์ง๊ฐ ์ด๋ ต๋ค.
# ๋์ ๊ธฐ๋ฒ
# ์ ์ถ๋ ฅ ๊ฐ ๊ฒ์ฆ
XSS Cheat Sheet์ ๋ํ ํํฐ ๋ชฉ๋ก์ ๋ง๋ค์ด ๋ชจ๋ Cheat Sheet์ ๋ํ ๋์์ ๊ฐ๋ฅํ๋๋ก ์ฌ์ ์ ๋๋นํ๋ค. XSS ํํฐ๋ง์ ์ ์ฉ ํ ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋๋์ง ์ง์ ํ ์คํธ ๊ณผ์ ์ ๊ฑฐ์ณ๋ณผ ์๋ ์๋ค,
# XSS ๋ฐฉ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํ์ฅ์ฑ
Anti XSS ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ณตํด์ฃผ๋ ํ์ฌ๋ค์ด ๋ง๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์๋ฒ๋จ์์ ์ถ๊ฐํ๋ฉฐ, ์ฌ์ฉ์๋ค์ ๊ฐ์ ๋ธ๋ผ์ฐ์ ์์ ์ ์ฑ ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋์ง ์๋๋ก ํ์ฅ์ฑ์ ์ค์นํ์ฌ ๋ฐฉ์ดํ ์ ์๋ค.
# ์น ๋ฐฉํ๋ฒฝ
์น ๋ฐฉํ๋ฒฝ์ ์น ๊ณต๊ฒฉ์ ํนํ๋ ๊ฒ์ผ๋ก, ๋ค์ํ Injection์ ํ๊บผ๋ฒ์ ๋ฐฉ์ดํ ์ ์๋ ์ฅ์ ์ด ์๋ค.
# CORS, SOP ์ค์
CORS(Cross-Origin Resource Sharing), SOP(Same-Origin-Policy)๋ฅผ ํตํด ๋ฆฌ์์ค์ Source๋ฅผ ์ ํ ํ๋๊ฒ์ด ํจ๊ณผ์ ์ธ ๋ฐฉ์ด ๋ฐฉ๋ฒ์ด ๋ ์ ์๋ค. ์น ์๋น์ค์ ์ทจ์ฝํ ๋ฒกํฐ์ ๊ณต๊ฒฉ ์คํฌ๋ฆฝํธ๋ฅผ ์ฝ์ ํ ๊ฒฝ์ฐ, ์น๋ช ์ ์ธ ๊ณต๊ฒฉ์ ํ๊ธฐ ์ํด ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๋ฉด ์ ๋ ฅ๊ฐ ์ ํ์ด๋ ๊ธฐํ ์์ธ ๋๋ฌธ์ ๊ณต๊ฒฉ ์ฑ๊ณต์ด ์ด๋ ต๋ค. ๊ทธ๋ฌ๋ ๊ณต๊ฒฉ์์ ์๋ฒ์ ์์นํ ์คํฌ๋ฆฝํธ๋ฅผ ๋ถ๋ฌ ์ฌ ์ ์๋ค๋ฉด ์ด๋ ์๋์ ์ผ๋ก ์ฌ์์ง๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ CORS, SOP๋ฅผ ํ์ฉ ํ์ฌ ์ฌ์ ์ ์ง์ ๋ ๋๋ฉ์ธ์ด๋ ๋ฒ์๊ฐ ์๋๋ผ๋ฉด ๋ฆฌ์์ค๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๊ฒ ์ ํํด์ผ ํ๋ค.