์ด๋ฒ ํฌ์คํ
์ 'Stored Xss - Blog' ์
๋๋ค.
์ค์ตํ๋ ๋ชจ๋ ๊ณต๊ฒฉ์ ์ค์ ๋ก ์ฌ์ฉํ์๋ฉด ์๋ฉ๋๋ค.
ํ์ฉ๋ฐ์ง ์์ ์๋น์ค ๋์์ ํดํน์ ์๋ํ๋ ํ๋์ ๊ธ์งํ๋ฉฐ,
๋ชจ๋ ๋ฒ์ ์ฑ
์์ ์ฌ์ฉ์์๊ฒ ์๋ ๊ฒ์ ๋ช
์ฌํด์ฃผ์ธ์.
๋์ด๋ ํ
ํ์ด์ง์ ์ ์
xss ํ์ด์ง๋ ํ
์คํธ ์
๋ ฅ ๊ณต๊ฐ์ ๋ด์ฉ์ ์
๋ ฅํ๊ณ 'submit' ๋ฒํผ์ ํด๋ฆญํ๋ฉด ๊ทธ ์๋์ ์๋ ํ
์ด๋ธ์ ์
๋ ฅํ
๋ด์ฉ์ ์ ์ฅํ๋ค.
์ ํ
์คํธ ์
๋ ฅ ๊ณต๊ฐ์ 'Succeed'๋ผ๋ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๋ ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์
๋ ฅํด๋ณด์.
<script>alert('Succeed');</script>
์ด ๋ฌธ์๋ฅผ ์
๋ ฅํด์ฃผ๊ณ submit์ ํด๋ฆญํ๋ฉด
์คํฌ๋ฆฝํธ๊ฐ ์คํ๋์ด ํ์ด์ง์ ๊ฒฝ๊ณ ์ฐฝ์ผ๋ก์ Succeed๋ผ๋ ๋ฉ์ธ์ง๊ฐ ์ถ๋ ฅ๋๋ค.
(์ ์คํฌ๋ฆฝํธ ๋ฌธ ์ค alert == ๊ฒฝ๊ณ ์ฐฝ)
์คํฌ๋ฆฝํธ ์คํ ํ ๊ธฐ๋ก์ ํ์ธํด๋ณด๋ฉด, ํ
์คํธ ์นธ์ด ๋น์ด์๋ค. ์ด๋ ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์
๋ ฅํ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ค์์ผ๋ก ์ฟ ํค ๊ฐ์ ์์๋ด๋ ์คํฌ๋ฆฝํธ ๋ฌธ์ ์
๋ ฅํด์ค๋ค.
submit๋ฒํผ์ ํด๋ฆญํ๋ฉด, ์ฟ ํค๊ฐ์ด ์ถ๋ ฅ๋๋ค.
์ด ์คํฌ๋ฆฝํธ๋ DB๋ด์ ์ ์ฅ์ด ๋์ด์๊ธฐ ๋๋ฌธ์, ๋ค๋ฅธ ์น ๋ธ๋ผ์ฐ์ ๋ก ์ ์ํ๋ฉด
๋ฐ๋ก ์ฌ์ฉ์์ ์ฟ ํค๊ฐ์ ๊ฒฝ๊ณ ์ฐฝ์ผ๋ก ์ถ๋ ฅํ๋ค.
์ ์ํ ๋๋ง๋ค ์คํฌ๋ฆฝํธ ์ฝ๋ ์ถ๋ ฅ
๋์๋ฐฉ์
๋์ด๋ ์์์๋ ํ
์คํธ ์
๋ ฅ ๊ณต๊ฐ์ ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์
๋ ฅํด๋ ์ฝ๋๊ฐ ์คํ๋์ง ์๊ณ , ๋ฌธ์๋ก ์ถ๋ ฅ๋๋ค.
์ฝ๋๋ฅผ ํ์ธํด๋ณด๋ฉด 'sqli_check_3' ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์
๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์ฐํํ๋ค.
'sqli_check_3' ํจ์๋ฅผ functions_external.php์ ์ ์๋์ด์๊ณ
์ด ํจ์๋ฅผ ํ์ธํด๋ณด๋ฉด
mysqli_real_escape_stringํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์
๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์ฐํํ๋ค.
mysqli_real_escape_string ?
PHP์ ์ ์๋์ด ์๊ณ PHP ๊ธฐ๋ณธ ์ ๊ณตํจ์์ธ mysql_real_escape_string ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์
๋ ฅํ ๋ฐ์ดํฐ๋ฅผ ์ฐํํ๋ค.
์ด ํจ์๋ ๋งํฌ์ ๋ฐ์ดํฐ๋ฅผ ์ธ์๋ก ๋ฐ์ผ๋ฉฐ ์
๋ ฅ ๋ฐ์ดํฐ๋ฅผ ๋ณํํ๋ค.
์ฌ์ฉ์ ์
๋ ฅ ๊ฐ์ SQL ๋ฌธ๋ฒ์์ ์ฌ์ฉํ๋ ํน์ ๋ฌธ์๊ฐ ์์ ๊ฒฝ์ฐ
๋ฐฑ์ฌ๋์๋ฅผ ๋ถ์ฌ ์
๋ ฅ ๋ฐ์ดํฐ๋ฅผ SQL๋ฌธ๋ฒ์ผ๋ก ์ธ์ํ์ง ์๋๋ก ๋ฐฉ์ดํ๋ค.
์ฌ๊ธฐ์ ์ฐํํ๋ ๋ฌธ์๋ 'NULL, \n, \r, \, ', ", ^Z' ์ด๋ฏ๋ก ์์๋ฐ์ดํ(')๋ฅผ ์
๋ ฅํ๋ฉด ๋ฐฑ์ฌ๋์๊ฐ ๋ถ์ด SQL์ฟผ๋ฆฌ๋ก ์ธ์ํ์ง ์๋๋ค.
์ด ํจ์๋ sql์ธ์ ์
์ ๋์๋ฐฉ์์ผ๋ก๋ ์ฐ์ด๋๋ฐ 'htmlspecialchars' ํจ์๋ก ์ฐํํ ์๋ ์์ง๋ง, ํ
์คํธ ์
๋ ฅ ๊ณต๊ฐ์ผ๋ก
sql ์ธ์ ์
์ ์๋ํ ๊ฐ๋ฅ์ฑ์ด ์์ผ๋ฏ๋ก, ์ ํจ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ฐํํ ๊ฒ์ด๋ค.
htmlspecialchars
์ด ํจ์๋ PHP์์ ์ ๊ณตํ๋ ๊ธฐ๋ณธ ํจ์๋ก, HTML์์ ์ฌ์ฉํ๋ ํน์ ๋ฌธ์๋ฅผ UTF-8 ๋ก ๋ฐํํฉ๋๋ค.
UTF-8์ ์ ๋์ฝ๋ ํ ๋ฌธ์๋ฅผ 1byte๋ถํฐ 4byte๊น์ง ์ธ์ฝ๋ฉํ๋ฉฐ ์์คํค ์ฝ๋๋ ํธํ์ด ๊ฐ๋ฅํฉ๋๋ค.
htmlspecialcharsํจ์์์ ๋ณํํ๋ ํน์๋ฌธ์๋ &, ", ', <, > ์
๋๋ค.