Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Like Injection Добавлено: 19.03.07 17:12  

Автор вопроса:  Artyom
Вы знаете что такое SQL Injection, знаете какой вред он может нанести базе данных, используете только параметризированые запросы, а если необходимо выполнять конкатенцию, то, конечно, заменяете недопустимые символы? И думаете что ваше приложение безопасно? Гм, я бы так не думал...

Оказывается, есть еще одна дырка. Не такая опасная, как SQL Injection, тем не менее, дырка.

Итак вот ваш SQL-запрос:

SELECT * FROM Users WHERE UserName Like @UserName + '%'


Все логично. Человек вводит "Art", при конкатенции получаем "Art%" запрос ищет всех пользователей, чье имя начинается на Art. Ничего криминального.

Верно?

Неверно.

Пользователю не интересны пользователи, чьи имена начинаются на "Art". Его больше интерисуют те, чьи имена начинаются на "%WAZZZZUP". Этот текст я и ввожу в программу. А что она ищет? Ищет полный бред - выдаст всех пользователей, у которых в имени есть "WAZZUP". В результате клиенты несут убытки из-за непредсказуемо работающего ПО, компания-разрабочтик выплачивает огромные неустойки.

Что же делать?

А делать нужно совсем немного - всего лишь несколько замен символов:

символ... ...меняем на
  [            [[]
  %            [%]
  _            [_]

Вот, собственно, и все.

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #1 Добавлено: 19.03.07 17:18
У меня интерисуются, зачем помимо "%" заменять другие символы.

% - произвольная строка из 0 или более символов
_ - один произвольным символ

[ и ] используются подобно тому как они используются в регулярных выражениях:

[a-z], [abcdf], [^e-x]

Заменяем только "[". "]" и "^" не трогаем, так как если открывающей квадратной скобки нет (она заменена ескейпом), то дальнейшая конструкция уже не воспринимается как шаблон.

Ответить

Номер ответа: 2
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #2 Добавлено: 19.03.07 22:08
сам с собой? :)

Ответить

Номер ответа: 3
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #3 Добавлено: 19.03.07 23:30
сам с собой? :)

Нет, конечно.

Мне спросили по ICQ про назначение первого и последнего символов, видимо, постеснялись тут спрашивать :)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам