Sql инъекция пример
Автор Олег Астанин задал вопрос в разделе Другие языки и технологии
SQL-инъекция и получил лучший ответ
Ответ от Артур Тагиров[гуру]
а ты входные параметры фильтруешь?
на всякий:
function sqlcheck($var)
{
$var=ereg_replace('[^а-яёА-ЯЁa-zA-Z0-9_. \-]','',$var);
#оставляем только то, что разрешено
#очень важно (!) профильтровать все переменные, учавствующие в запросе, иначе будет sql уязвимость
return $var;
}
тело этой функции объявляешь где-нибудь в отдельном файле, и инклудишь его при сборке, а к самой функции обращаешься так: $id=sqlcheck($_GET['id']);
а потом уже делаешь запрос.
Инъекцию проводишь так: (и тут дальше идет тело иньекции)
(это все, если в id будет содержаться не только число, а если передается просто число, то стандартными функциями фильтруй)
примеры SQlL-инъекций:
index.php?Kat=-1/**/union/**/select/**/userpass/**/from/**/kep_uporabniki/**/where/**/IdUser=1/*
null+union+select+1,concat_ws(0x203a20,usrname,pass)+from+userso--
showcat.php?Cat_ID=null+union+select+1,concat_ws(0x203a20,name,password)+from+Users--
index.php?t=ph&id=null'+union+select+unhex( hex(concat_ws(0x203a20,id,litera,haslo,0x3c62723e3c62723e)))+from+sennik--+
index.php?sn=1'+AND+0+UNION+ALL+SELECT+1,database(),3,user(),5,6/*
index.php?ob=start&back&con=1
Если $id - число, то делай intval($id), тогда никакая иньекция не пролезет
используй функцию mysql_real_escape_string - она экранирует все спец символы в строке и подготавливает строку к запросу SQL
"да, фильтрую с помощью htmlspecialchars, trim, addslashes, empty, и еще через функцию для майэскюэль...." этоооо.. .слов нет. А зачем? Где написано что нужно применять такую кашу? Если id - целое число: $mysql_id = (int)$id; // или
$result_sql = mysql_query("SELECT * FROM tables WHERE id='$id'"); Задача: получить строку чтобы при запросе выдало данные с другого ID Условие: вы пока никак не защищены. Значит надо менять запрос! (это и есть SQL иньекция 🙂 ) Чё мы
Что такое SQL-инъекция?
хе накопипастили)) )
это не встраивание запроса это ломание его
пример
select ВСЕ
подробнее...
Что такое уязвимость? можно на примере пожалуйста..
В компьютерной безопасности, термин уязвимость (англ. vulnerability) используется для обозначения
подробнее...
Плюсы и минусы MySQL или tpl (txt)?
Принципиальные преимущества БД перед обычными текстовыми/бинарными файлами:
1)
подробнее...
Как данные получить из базы MySQL и занести их в переменную PHP?
$q = mysql_query("SELECT * FROM TABLE");
$resulr_array = mysql_fetch_assoc($q);
подробнее...