Как защититься от sql-инъекций.

Как написать код защищающий от sql-инъекций.
Насколько я знаю, точного, единого способа нету, э много мнений, способов. Каковы ваши способы?
Заранее благодарен.

1 ответов


"Единым" способом можно считать использование т.н. prepared statements, и задание параметров запроса при помощи соответсвующих методов setInt, setFloat, setString и т.д.(или bind_param, или насколько еще фантазия у разрабочиков работает). Для любого объектно-ориентированного языка программирования Вы найдете библиотеки доступа к БД, которые выполняют всю рутинную работу и делют необходимый escape параметров.


Например в php переменные, вставляющиеся в SQL запрос лучше обрамлять mysql_real_escape_string()... Насколько я знаю - такой подход убережет от инъекций.


Поздравляю RAPTOR с попаданием в говнокод :)
Столько ужаса комментировать не буду - скажу просто что неправильно все.

a1ex07 - mysqli тоже не самая новая библиотека - почему бы не воспользоваться PDO?

Кстати с php 5.3 библиотека mysql переписана с новым драйвером, так что она не очень то она стала устаревшей

По поводу того, что использовать и все такое - если не брать в расчет ORM, то остаются библиотеки работы с базами - например PDO, AdoDB PearDB
сам стараюсь почти везде использовать DbSimple (dklab.ru)


вот простой пример обработки запросов на проверки страшных кавычек ' .

$str=тут запрос и всё такое сам поймёшь Например Ник или Пароль;
$col=strlen($str);
for($i=0; $i <= $col ;$i++)
{
$d=1;
$b= substr($str,$i,$d);
$d++;
if($b == chr(92)) { exit ("Hack attemp!!!"); }
}
вот простой пример защиты не 100% ну хоть чтота