Защита форм от SQL-инекций

При разработке, более или менее больших проектов, программистам приходится использовать БД (базу данных). Чем в свою очередь обязательно пытаются воспользоваться разного рода хакеры и взломщики. В связи с этим, все данные, которые получаются из _POST или _GET запросов перед добавлением в БД нужно фильтровать.
Как производится фильтрация?
Фильтрация производится следующим образом:
$text_to_check = mysql_real_escape_string ($_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;
Но тут опять-же остаются вопросы: А если нужно заносить в БД какие-либо специальные символы. Выход есть:
function escape_inj ($text) {
$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-инъекция в своей основе – это добавления запроса к БД, то при помощи данной процедуры мы можем убрать все левые запросы.

RuCoreNET - лучшее для вас!


Поделись статьей с друзьями




65 просмотров


0 0 vote
Рейтинг статьи
Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments


Do NOT follow this link or you will be banned from the site!
0
Would love your thoughts, please comment.x
()
x

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: