
SQL INJECTION ์ด๋?
์ฌ์ฉ์๊ฐ ์ ์์ ์ธ ์ ๋ ฅ์ด ์๋ ๋น์ ์์ ์ธ ์์์ SQL ๋ฌธ์ ์ ๋ ฅํด์ DB์ ๋น์ ์์ ์ผ๋ก ์ ๊ทผํ๋ ๊ฒ..
๋น์ ์์ ์ด์ง๋ง ์ปดํจํฐ๋ ๋น์ ์์ธ๊ฑธ ๋ชฐ๋ผ์ ๋ฐ์ดํฐ๋ฅผ ๋ค ์ค๋ฒ๋ฆฐ๋ค (๋ฌธ์ )
SQL INJECTION ๋ณด์ ๋ฐฉ๋ฒ
- ์ ๋ ฅ ๊ฐ์ ๋ํ ๊ฒ์ฆ (์ง๊ธ ํ ๊ฑฐ์)
- Prepared Statement ๊ตฌ๋ฌธ ์ฌ์ฉ - ํ์ค๋ก ์กฐํ ๋๋ ค๋ฒ๋ฆฌ์ง๋ง๊ณ ๋๋ ์ ๊ฒ์ ์กฐ๊ฑด์ด ๋ ๋งํ ์ ๋ค์ ๋ณ์๋ ์ด๋ฐ๋ฐ ์ ์ฅ๋๊ณ ๋ฝ๊ฐ์ ์ฐ๋ ์๋ฆฌ
- Error Message ๋ ธ์ถ ๊ธ์ง - ๋ํ ์ผ ํ ๊ฒ๋ค์ ๊ฐ๋ฐ ๋จ๊ณ์์ ๊ฐ๋ฐ์๋ง ๋ณด์...
- ๋ฐฉํ๋ฒฝ ์ฌ์ฉ
ํด๊ฒฐ๋ฐฉ๋ฒ
๋๋ ์์์ ๋งํ ๋ณด์ ๋ฐฉ๋ฒ๋ค ์ค 1๋ฒ ์ ๋ ฅ ๊ฐ์ ๋ํ ๊ฒ์ฆ์ ํด๋ณด๋๋ก ํ๊ฒ ๋ค.
ํํ ๋งํ๋ ์ ๊ท์์ ์ฌ์ฉ ํ ๊ฒ์ธ๋ฐ..
์ ๊ท์(Regular Expressions)๋?
์ ๊ท์์ด ๋๊ตฐ๋ฐ...

์ด ์ฌ๋์ ์์ด์ด๋ฆ regex ํด๋ ๋์ ์ข๊ฒ ๋ค..
ํ ์คํธ์์ ํจํด์ ๊ฒ์ํ๊ธฐ ์ํ ํ์คํ๋ '์ธ์ด'
ํน๋ณํ ์๋ฏธ๋ก ์ธ์๋๋ ๋ฉํ๋ฌธ์ ์ ์ผ๋ฐ ๋ฌธ์์ธ ์ ๊ท ๋ฌธ์๋ฅผ ์ด์ฉํด์ ์ ์ํ ์ ์๋ค.

์ด๋ฐ ๋๋์ผ๋ก...
sql์ ์ฌ์ฉ๋๋ ํน์๋ฌธ์ ๋ช๊ฐ์ง๋ฅผ ๋ง์์ค์ผ๋ก์จ ์ฝ๊ฐ์ ๋ณด์์ ์งํํด๋ณด๋ ค๊ณ ํ๋ค.
์ฝ๋
const checkSearchedWord = useCallback((event) => {
var expText = /[%=*><]/;
if (expText.test(event.key) == true) {
alert("๋ณด์: ํน์๋ฌธ์(%,=,*,>,<)๋ ์
๋ ฅ ํ ์ ์์ต๋๋ค.");
event.preventDefault();
}
// // ํน์ ๋ฌธ์์ด(sql์์ฝ์ด์ ์ ๋ค ๊ณต๋ฐฑ ํฌํจ) ์ ๊ฑฐ
// var sqlArray = new Array(
// "SELECT", "INSERT", "DELETE", "UPDATE", "CREATE", "DROP", "EXEC",
// "UNION", "FETCH", "DECLARE", "TRUNCATE"
// );
// var regex;
// for (var i=0; i<sqlArray.length; i++){
// regex = new RegExp(sqlArray[i], "gi");
// if(regex.test(event.key)){
// alert("["+sqlArray[i]+"]์(๊ณผ)๊ฐ์ ํน์ ๋ฌธ์๋ก ๊ฒ์ํ ์ ์์ต๋๋ค.");
// event.preventDefault();
// }
// }
},[])
๋๋ ์ฒซ๋ฒ์งธ ๋ถ๋ถ์ธ /[%=*><]/ ๋ง ๋ง์์ฃผ๋๋ก ์ฌ์ฉํ๊ณ ์์ด์ ์๋ ๋ถ๋ถ์ ์ฃผ์์ฒ๋ฆฌ ํด๋์๋ค.
ํจ์์ฒ๋ผ ๋ฃ์ด๋๊ณ ์จ๋ ์ข๊ฒ ์ง๋ง ํ์์ ๊ฒฝ์ฐ์๋ onkeydown ์ด๋ฒคํธ์ ๊ฑธ์ด๋๊ณ ์ ํ์ฌ...
์ด๋ ๊ฒ ํจ์๋ก ๋นผ๋ ๊ฒ์ ํฌ๊ธฐํ์๋ค ~
์๋ฌดํผ 1๋ฒ์งธ ๋ถ๋ถ์ ํน๋ฌธ ๋ง๋ ๋ถ๋ถ!
๋๋ฒ์งธ ๋ถ๋ถ์์ sql๊ณผ ๊ด๋ จ๋ ๋จ์ด๋ฅผ ๋ง๋ ๋ถ๋ถ์ด๋ค.
์ ๋ถ ๋ฌธ์๋ฅผ ์ธ์ํ๋ฉด ์ฌ์ฉ์์๊ฒ alert ๋ฉ์ธ์ง๋ฅผ ํ๋ฒ ๋์์ฃผ๊ณ , ์ด ๊ธ์ ๊ฐ์ default๋ก ๋๋ ค๋ฒ๋ฆฐ๋ค.
<input type='text' onKeyDown={checkSearchedWord}>
์ด๋ฐ ์์ผ๋ก ๊บผ๋ด์ฐ๋ฉด ๋๋ฑ์ด๋ค.
๊ทธ๋ฌ๋ฉด ์ด์ %=*>< ๊ฐ์ ํน์๋ฌธ์๋ฅผ input์ ์ ๋ ฅํ๊ฒ ๋๋ฉด !

์ด๋ ๊ฒ ๋จ๊ณ input์๋ ์์ ์ ๋ ฅ๋ ๋์ง ์๊ฒ ๋๋ค.
ps. ๋ด๊ฐ ์ฃผ์ ์ฒ๋ฆฌ ํด๋ ๋จ์ด ๋ถ๋ถ์ ์ฒ๋ฆฌํ๊ณ ์ถ์ผ๋ฉด
๋ฒํผ์ ๋๋ฅผ ๋์ match ๋ฅผ ํ์ฉํด์ ์ ๋จ์ด๋ค์ ์ฐพ์๋ด๊ณ , ์์ผ๋ฉด return์ ํด์ฃผ๋ฉด ๋ ๊ฒ ๊ฐ๋ค...!