При разработке, более или менее больших проектов, программистам приходится использовать БД (базу данных). Чем в свою очередь обязательно пытаются воспользоваться разного рода хакеры и взломщики.Введение
При разработке, более или менее больших проектов, программистам приходится использовать БД (базу данных). Чем в свою очередь обязательно пытаются воспользоваться разного рода хакеры и взломщики. В связи с этим, все данные, которые получаются из _POST или _GET запросов перед добавлением в БД нужно фильтровать.
Как производится фильтрация?
Фильтрация производится следующим образом:
$text_to_check = strip_tags($text_to_check);
$text_to_check = htmlspecialchars($text_to_check);
$text_to_check = stripslashes($text_to_check);
$text_to_check = addslashes($text_to_check);
$_GET["запрос"] = $text_to_check;
Но тут опять-же остаются вопросы: А если нужно заносить в БД какие-либо специальные символы. Выход есть:
$text = strtolower($text); // Приравниваем текст параметра к нижнему регистру
if (
!strpos($text, "select") && //
!strpos($text, "union") && //
!strpos($text, "select") && //
!strpos($text, "order") && // Ищем вхождение слов в параметре
!strpos($text, "where") && //
!strpos($text, "char") && //
!strpos($text, "from") //
) {
return true; // Вхождений нету — возвращаем true
} else {
return false; // Вхождения есть — возвращаем false
}
}
$section = $_GET[section]; // Читаем параметр
if (!escape_inj ($section)) { // Проверяем параметр
echo "Это SQL-инъекция.";
exit ();
} else {
$result = mysql_query ("SELECT * FROM `tbl_name` WHERE `section` = $section ");
… // Продолжаем работу
}
Так как SQL-инъекция в своей основе — это добавления запроса к БД, то при помощи данной процедуры мы можем убрать все левые запросы.
На сегодня на этом все. Ждите следующих публикаций, с уважением iZmobil aka jrtrader.
Если помог — жми + в репу или копейку на: R376865577299
Отправить комментарий
Вы должны быть зарегистрированы чтобы оставить комментарий.
Вы должны быть зарегистрированы чтобы оставить комментарий.