Защита форм от 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-инъекция в своей основе — это добавления запроса к БД, то при помощи данной процедуры мы можем убрать все левые запросы.

На сегодня на этом все. Ждите следующих публикаций, с уважением iZmobil aka jrtrader.

Если помог — жми + в репу или копейку на: R376865577299

Автор публикации

не в сети 13 лет

jrtrader

Комментарии: 0Публикации: 2Регистрация: 10-03-2011

Понравилась статья? Поделись в соц. сетях:

Похожие новости

Отправить комментарий

wpDiscuz
Авторизация
*
*
Регистрация
*
*
*
Генерация пароля