Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2015, 08:47   #1
maksim_serg
Форумчанин
 
Аватар для maksim_serg
 
Регистрация: 25.03.2010
Сообщений: 417
По умолчанию Защита от запросов SQL

Добрый день
Не силен в php, написал свой простенький сайт. Ни чего особенного одна страница index.php и содержимое формируется в зависмости от адреса, например
Код:
http://site/?id=1
идет поиск в базе содержимого с id=1 и выводится текст (id = var(10))

Последнее время сайт часто блокируют и на почту приходят сообщения типа:

Превышено время работы скрипта....
и такие запросы:
Код:
MySQL Query: SELECT description,keywords,title FROM page WHERE id='1' or 1=(/**/sElEcT 1 /**/fRoM(/**/sElEcT cou
или
Код:
SELECT description,keywords,title FROM page WHERE id='1111111111111111111111111111' UNION SELECT CON
Что это такое и как от этого избавиться?
maksim_serg вне форума Ответить с цитированием
Старый 12.03.2015, 10:20   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Очевидно, в коде присутствуют уязвимости, позволяющие использовать SQL injection.
Нужно смотреть код.
Защита от SQL-инъекций
SQL injection для начинающих
SQL injection полный FAQ
Andkorol вне форума Ответить с цитированием
Старый 12.03.2015, 10:31   #3
maksim_serg
Форумчанин
 
Аватар для maksim_serg
 
Регистрация: 25.03.2010
Сообщений: 417
По умолчанию

спасибо
кажется есть идея
вот код ( с коленки набран)
Код:
$sql = "SELECT description,keywords,title FROM page WHERE id='$_GET[id]'"
думаю нужно так:
Код:
$param = $_GET[id];
'а тут его проверить с помощью регулярных выражений на правильность (только цифры, не более 10 символов);
'если не соответствует - страница 404;
$sql = "SELECT description,keywords,title FROM page WHERE id='$param'"
а как составить регулярное выражение?
maksim_serg вне форума Ответить с цитированием
Старый 12.03.2015, 10:32   #4
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

Код:
$param = intval($_GET[id]);
думаю вполне хватит вам
ADSoft вне форума Ответить с цитированием
Старый 12.03.2015, 10:38   #5
maksim_serg
Форумчанин
 
Аватар для maksim_serg
 
Регистрация: 25.03.2010
Сообщений: 417
По умолчанию

тоже вариант, благодарю всех
maksim_serg вне форума Ответить с цитированием
Старый 14.03.2015, 09:40   #6
Dmitry33RU
Пользователь
 
Регистрация: 09.10.2014
Сообщений: 62
По умолчанию

Код:
if(!preg_match("/^[0-9]+$/", $id)) exit("Неверно указан идентификатор!");
Ну или можно еще добавить ограничение на кол-во цифр

Код:
if(!preg_match("/^[0-9]{1,10}$/",$id)) exit("Неверно указан идентификатор!");
Dmitry33RU вне форума Ответить с цитированием
Старый 13.05.2015, 17:24   #7
Gost1
Новичок
Джуниор
 
Регистрация: 13.05.2015
Сообщений: 1
По умолчанию

to maksim_serg. Сергей, надо завершить то, что мы с Вами начали. Отдайте нам исходники - мы Вам заплатим.
Gost1 вне форума Ответить с цитированием
Старый 13.05.2015, 18:02   #8
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,453
По умолчанию

ADSoft уже ответил, как надо делать, для числовых переменных хватает intval() или (int)

Последний раз редактировалось uberchel; 13.05.2015 в 18:07.
uberchel вне форума Ответить с цитированием
Старый 14.05.2015, 10:07   #9
maksim_serg
Форумчанин
 
Аватар для maksim_serg
 
Регистрация: 25.03.2010
Сообщений: 417
По умолчанию

Цитата:
Сообщение от Gost1 Посмотреть сообщение
to maksim_serg. Сергей, надо завершить то, что мы с Вами начали. Отдайте нам исходники - мы Вам заплатим.
чё? какие исходники?
maksim_serg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
аудит sql-запросов absbelii SQL, базы данных 0 16.08.2013 22:05
написание запросов sql vicvic90 Фриланс 1 28.01.2013 11:24
12 SQL-запросов Best Programmist Microsoft Office Access 7 12.12.2009 20:46
Написание SQL-запросов tsergey Помощь студентам 9 12.02.2009 11:17