Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Защита от SQL-Injection  [new]
Диам
Member

Откуда:
Сообщений: 1480
Здравствуйте.
У меня из программы вызывается хранимая процедура, в которую я передаю вводимый пользователем текст
spCall "exec MySP '" & st & "'"

В этом тексте пользователь может написать все что хочет. Перед вызовом я обрабатываю параметр st - заменяю одну одинарну кавычку на две одинарные. Достаточно ли этого для защиты? Как еще пользователь может осуществить инъекцию?
5 фев 14, 11:13    [15521002]     Ответить | Цитировать Сообщить модератору
 Re: Защита от SQL-Injection  [new]
angel_zar
Member

Откуда: Барнаул
Сообщений: 902
Тут больше вопросов к программе, а не к скулю.
Скуль выполнит, то что ему передадут
А вообще например в делфи
Вместо такого вида
ADOQuery.SQL.Text:='exec myproc '''+MyTEXT+'''';
ADOQuery.Open;

Использовать
ADOQuery.SQL.Text:='exec myproc :MyTEXT';
ADOQuery.Parametrs.ParseSQL(ADOQuery.SQL.Text, true);
ADOQuery.Parametrs.ParamByName(MyParam).AsString:=MyTEXT;
ADOQuery.Open;
5 фев 14, 11:19    [15521055]     Ответить | Цитировать Сообщить модератору
 Re: Защита от SQL-Injection  [new]
Диам
Member

Откуда:
Сообщений: 1480
хранимка вызывается из Акцесса
5 фев 14, 11:28    [15521144]     Ответить | Цитировать Сообщить модератору
 Re: Защита от SQL-Injection  [new]
Jaffar
Member

Откуда:
Сообщений: 633
user ввел: "ааа' insert TT(AA)select 1", где insert TT(AA)select 1 - иньекция

1.замени ' на '' и строку обернуть в одинарные ковычки
2.процедуру вызывать так: exec proc_ss @a = '111', b = 'qwsl;qw' т.е. явно присваивая значения параметрам процедуры
3.ограничить учетку пользователя - только правом выполнения этой процедуры.
5 фев 14, 12:15    [15521568]     Ответить | Цитировать Сообщить модератору
 Re: Защита от SQL-Injection  [new]
Диам
Member

Откуда:
Сообщений: 1480
Jaffar, кавычку я и так заменяю на две ковычки.
После такой замены пробую всякое вводить в текстовое поле - и одинарную кавычку и двойную - все, чтобы я ни ввел, съедается процедурой и сохраняется в таблице в таком виде, как я ввел это в текстовое поле (я не рассматриваю тут переполнение размера поля).
5 фев 14, 12:55    [15521960]     Ответить | Цитировать Сообщить модератору
 Re: Защита от SQL-Injection  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6121
Это же первое правило программиста-прикладника-db'шника: за передачу параметров конкатенацией тебя убьют. Аксесс должен поддерживать параметризацию вызовов, ищите в соотв. документации.
5 фев 14, 15:18    [15523156]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить