๐นย ์ ๋ฆฌ by ์ฅ๋ฏธ(https://velog.io/@newbiekim/)
SQL Injection ๊ณต๊ฒฉ์ด๋, ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ DB์ ์ฟผ๋ฆฌ๋ฅผ ์์ฒญํ ์ ์ ๋ ฅ๋ ๋ฐ์ดํฐ์ ์ ํจ์ฑ ๊ฒ์ฆ์ ํ์ง ์์ DB ์ ๋ณด๋ฅผ ์ด๋ํ๊ฑฐ๋ ์กฐ์ํ ์ ์๋ ๋ณด์ ์ทจ์ฝ์ ์ ๋ ธ๋ฆฐ ๊ณต๊ฒฉ์ ๋งํ๋ค.
SQL Injection์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ์ ์ด๋ฆ / ์ฌ์ฉ์ ID์ ๊ฐ์ด ์ฌ์ฉ์์๊ฒ ์ ๋ ฅ์ ์์ฒญํ ๋ ๋ฐ์ํ๋ค.
userId = getRequestString("userId");
sql = "SELECT * FROM Users WHERE userId = " + userId;
1 = 1์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ SQL Injection์ ํญ์ ์ฐธ์ด๋ค.
๋ง์ฝ userId ๋ฅผ 105 OR 1=1๋ก ์ ๋ ฅํ๋ค๋ฉด SQL๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ํ์๋ ๊ฒ์ด๋ค.
SELECT * FROM Users WHERE userId = 105 OR 1=1;
์์ SQL๋ฌธ์ ์ ํจํ๋ฉฐ, OR 1=1์ด ํญ์ ์ฐธ์ด๊ธฐ ๋๋ฌธ์ Users ํ ์ด๋ธ์ ๋ชจ๋ rows๋ฅผ ๋ฐํํ๋ค.
์ด ๋ Users ํ ์ด๋ธ์ ์ด๋ฆ๊ณผ ์ํธ๊ฐ ํฌํจ๋์ด ์๋ค๋ฉด, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ชจ๋ ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ์ํธ์ ์ ๊ทผํ ์ ์์ ๊ฒ์ด๋ค.
โโ=โโ์ ๊ธฐ๋ฐํ SQL Injection์ ํญ์ ์ฐธ์ด๋ค.
๋ค์๊ณผ ๊ฐ์ ์ฌ์ฉ์ ๋ก๊ทธ์ธ ์์๊ฐ ์๋ค.
Username: Jangmi Password: myPass