Введение
При разработке, более или менее больших проектов, программистам приходится использовать БД (базу данных). Чем в свою очередь обязательно пытаются воспользоваться разного рода хакеры и взломщики. В связи с этим, все данные, которые получаются из _POST или _GET запросов перед добавлением в БД нужно фильтровать.
Как производится фильтрация?
Фильтрация производится следующим образом:
Но тут опять-же остаются вопросы: А если нужно заносить в БД какие-либо специальные символы. Выход есть:
Так как SQL-инъекция в своей основе - это добавления запроса к БД, то при помощи данной процедуры мы можем убрать все левые запросы.
На сегодня на этом все. Ждите следующих публикаций, с уважением iZmobil aka jrtrader.
Если помог - жми + в репу или копейку на: R376865577299
При разработке, более или менее больших проектов, программистам приходится использовать БД (базу данных). Чем в свою очередь обязательно пытаются воспользоваться разного рода хакеры и взломщики. В связи с этим, все данные, которые получаются из _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;
$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 ");
... // Продолжаем работу
}
$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
6 комментарии
0 загрузки
Детали
- Первый релиз 09 дек 2011
- Последнее обновление 03 авг 2026
- Документация Есть
- Содержимое файлов Исходные файлы
- Всего товаров 2
- Рейтинг (0)
- Регистрация 10 мар 2011
- Уровень 0
- Пользователь подтверждён Да
- Телефон подтверждён Нет
- Email подтверждён Нет

bizze
- 10 дек 2011-xXx-,
Укажи пожалуйста источник так, что б его хоть было видно, либо восстанови комментарий.
Например (с левой стороны):
Источник:
user0001
- 09 дек 2011копирайтеры хреновы, сюда посмотрите http://shop.loc/news/ а потом нападайте на автора за копипаст. человек пользу хотел принести!
jrtrader
- 09 дек 2011Статья сама по себе моя, это те коды которые использовал я в работе над своим скриптом. Примеры конечно я от куда-то брал
И реально ты открыл я про sql знаю малова-то, учюсь из уже готовых скриптов и только если уж сильно куда-то упираюсь начинаю искать инфу по нету... обычно пытаюсь сам изобрести велосипед.
И вот за это спасибо, не знал про етот прикольный сайтец.
кстате я использовал эту фигню изночально как отдельную функцию.
И еще к админам: если я тут накосячил в силу моих немногих знаний sql прошу убрать публикацию или изменить ее типа "так не нужно делать"
Всем спасибо за понимание... и прошу извинить я только учюсь
Forceman
- 09 дек 2011А еще проще все влить это в функцию и вызывать функцию в скрипте, чтобы каждый раз не писать столько кода для запросов.
Green-wm
- 09 дек 2011Мда. Код одинаковый. Копи паст.