Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Поговорим о sql injection? (число прочтений - 2433 )
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Поговорим о sql injection?
16. Июля 2006 :: 18:18
Печать  
Никто не думал на эту тему?

Имеем в обработке, к примеру, следующий код:
ВвестиСтроку(Номер, "Введите номер документа");
ТекстЗапроса = "SELECT * FROM _1SJOURN WHERE DOCNO LIKE '%" + Номер + "%'";

Имеем в документации по ВыполнитьИнструкцию следующий текст:
Если запрос содержит несколько SQL инструкций (multistatement batch), результаты возвращаются только от первой инструкции. Однако, на драйвер уходит весь текст запроса (По спецификации ODBC, будут ли выполнены остальные инструкции в пакете - зависит от драйвера. Для драйвера SQL Server они выполняются), остальные результаты игнорируются.

Итак, вводим при запросе строки "999999'    DELETE FROM _1SJOURN WHERE DOCNO LIKE '%"  (Без двойных кавычек...)
На выходе мы уже имеем след.запрос:
Код
Выбрать все
SELECT * FROM _1SJOURN WHERE DOCNO LIKE '%999999'    DELETE FROM _1SJOURN WHERE DOCNO LIKE '%%'
 




И упсс... Печаль


sql injection широко распостранен при хаке сайтов...
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Поговорим о sql injection?
Ответ #1 - 17. Июля 2006 :: 05:16
Печать  
Ну и первый (обязательный) шаг по борьбе с инъекциями - это ограничение размерности вводимой информации.
И в этом примере "Номер" скорей всего строка ограниченной длины в несколько символов.
  

1&&2&&3
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поговорим о sql injection?
Ответ #2 - 17. Июля 2006 :: 08:30
Печать  
Согласен, а если крайний случай, надо все таки дать возможномть ввести сиволов 50...

Можно ли отключить возможность выполнять вторую часть запроса?
Для меня это неактуально, интересует только теория...
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать