์ด๋ฒ ํฌ์คํ
์ 'XSS - Reflected(GET)' ์
๋๋ค.
์ค์ตํ๋ ๋ชจ๋ ๊ณต๊ฒฉ์ ์ค์ ๋ก ์ฌ์ฉํ์๋ฉด ์๋ฉ๋๋ค.
ํ์ฉ๋ฐ์ง ์์ ์๋น์ค ๋์์ ํดํน์ ์๋ํ๋ ํ๋์ ๊ธ์งํ๋ฉฐ,
๋ชจ๋ ๋ฒ์ ์ฑ
์์ ์ฌ์ฉ์์๊ฒ ์๋ ๊ฒ์ ๋ช
์ฌํด์ฃผ์ธ์.
๋์ด๋ ํ
์ค๋ ์ค์ตํ ๊ณต๊ฒฉ์ ๋ฐ์ฌํ xss - GET๋ฐฉ์
ํ๋ฉด์ ๋ค์ด๊ฐ๋ฉด first name, last name์ ์
๋ ฅํ๋ ์
๋ ฅ๋์ด ์๋ค.
์
๋ ฅํ ๋ด์ฉ์ ์๋ welcome ๋ค์ ์ถ๋ ฅ๋๋ค.
xss์ทจ์ฝ์ ์ด ์๋์ง ์์๋ณด์.
์ผ๋จ ๋ฐฉ์์ด get์ด๋, ํ๋ผ๋ฏธํฐ์ ๊ฐ์ ๋ฐ๊ฟ๋ณด์
: <script>alert("hello~");</script>
lastname์ ์๋ฌด ๊ฐ์ด๋ ์
๋ ฅํด์ค๋ ๋๋ค. (firstname์ ์ทจ์ฝ์ ์ด ์๋์ง testํ๋ ๊ฑฐ๋๊น)
๊ฒฐ๊ณผ
์คํฌ๋ฆฝํธ๊ฐ ์คํ๋๋ ๊ฒ์ ์ ์ ์๋ค.
์ฆ xss์ ์ทจ์ฝํ๋ค๋ ๊ฒ
์ welcome์ ์คํ ํ ์๋ ์ถ๋ ฅ๋๋ ๊ฒ
lastname์ ์
๋ ฅํ ๊ฐ๋ง ์ถ๋ ฅ๋๋ค. (์คํฌ๋ฆฝํธ ์ฝ๋๋ ์ถ๋ ฅ๋์ง ์์ --> firstname)
๋ฐ๋๋ก lastname์์ ์๋ํด๋ด๋ ๊ฒฐ๊ณผ๋ ๊ฐ๋ค.
๋ฐ๋๋ก firstname๋ง ์ถ๋ ฅ
์ฆ ์ดํ์ด์ง์ ์๋ firstname, lastname์ด๋ผ๋ ํ๋ผ๋ฏธํฐ๋ ๋๋ค xss์ ์ทจ์ฝํ๋ค.
๋์๋ฐฉ์
๋์ด๋ ์์์๋ first name์ด๋ last name์ ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์
๋ ฅํ์ฌ๋ ๋ฌธ์๋ก ์ธ์ํ๋ค.
ํ์ด์ง ์์ค๋ฅผ ํ์ธํด๋ณด์๋๋ xss_check_3ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์
๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์ฐํํ๋ค.
ํจ์ ๋ด๋ถ์๋ htmlspecialchars() ํจ์๋ฅผ ํธ์ถํ์ฌ ์
๋ ฅ ๋ฐ์ดํฐ๋ฅผ UTF-8๋ก ์ธ์ฝ๋ฉ ํ๋ค.
๋ด์ฉ์ ์ดํด๋ณด๋ utf-8๋ก ์ธ์ฝ๋ฉ์ ํด์ค๋ค.
๋ฐ์ดํฐ๋ฅผ htmlspecialchars๋ฅผ ํตํด ๋ฐ์ data(์
๋ ฅ๋ฐ์ดํ)๋ฅผ ์ธ์ฝ๋ฉ ํด์ฃผ๋ ํจ์์ธ๋ฐ
http://b.redinfo.co.kr/56
์์ ๊ฐ์ด ํน์๋ฌธ์๋ฅผ html์ํฐํฐ๋ก ๋ณํ์ํจ๋ค.
http://b.redinfo.co.kr/56
๋๋ฒ์งธ ์ธ์๋ ์๋ฅผ ๋ณด๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
ํ์ฌํผ ๋ฌธ์๋ก ์ธ์ํ๊ฒ ๋ฐฉ์ด ํ๋ฉด ๋๋ค!
+++
xss๋ ์น ํ์ด์ง์ ์ด๋ ๊ณณ์์๋ ์ทจ์ฝ์ ์ด ๋ฐ์ํ๋ฏ๋ก ํ์ฉํ ์์ค ์ฝ๋ ์ธ์๋
HTML ์ํฐํฐ ์ฝ๋๋ก ๋ณํํ์ฌ, ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์
์์ ์ธ ์์ค ์ฝ๋๋ฅผ ํด์ํ์ง ๋ชปํ๊ฒ ๋ง์์ผ ํ๋ค.
์ค๋ฌด์์๋ ํน์ ๋ฌธ์ ๊ฐ์ ํ๋์ฉ ์ฒ๋ฆฌํ๊ธฐ ํ๋ค์ด์ ์์ฒญ๋๋ ๋ณ์ ๊ฐ์
์๋น์ค ์ํฅ์ ์ฃผ์ง ์๋ ์ ์์ ๊ธธ์ด ์ ํ์ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
์ด ๋ฐฉ์ด๋ฐฉ๋ฒ์ SQL ์ธ์ ์
์ ๋์๋ฐฉ์์ผ๋ก๋ ํ์ฉ๋๋ค.