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

Откуда: Münster, Germany
Сообщений: 1738
Доброе время суток!

Есть в MSSQL комманды которые невозможно параметризированть (напр. из C#, подозреваю из Delphi тоже)
Пример такой команды:
CREATE LOGIN [LoginName] ....
ALTER LOGIN [LoginName] WITH PASSWORD='Пароль' ....."

Я не могу заменить LoginName или Пароль на параметр. Но вставлять их в комманду надо. приходится использовать регулярки для защиты от инъекций что не есть хорошо т.к. не даёт 100й гарантии. В данном случае у MSSQL есть процедуры которые позволяют заменить такую комманду, напр. sp_addlogin но вот незадача, в доке написано что использовать большинство из них нельзя т.к. в будующих версиях они будет изъяты.

Как быть в таких ситуациях? Возможно есть другие параметризируемые альтернативы?
Пробовал обсудить эту тему в форумах по Net но ничего кроме регулярок народ не предложил, а их использовать не хочется. Да и подозреваю что вопрос скорее из области MSSQL нежели Net.

Спасибо.
11 июл 13, 12:25    [14551555]     Ответить | Цитировать Сообщить модератору
 Re: Параметризированные запросы и некоторые инструкции MSSQL  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3422
Mikhail Tchervonenko,

Создать собственную хранимку по смене пароля, в нее передавать параметром. Внутри нее - динамический SQL.
11 июл 13, 12:31    [14551612]     Ответить | Цитировать Сообщить модератору
 Re: Параметризированные запросы и некоторые инструкции MSSQL  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
в sp_addlogin используется тот же самый CREATE LOGIN. собирается строка и выполняется в динамике.

exec master..sp_helptext 'sp_addlogin'
11 июл 13, 12:32    [14551629]     Ответить | Цитировать Сообщить модератору
 Re: Параметризированные запросы и некоторые инструкции MSSQL  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
В данном случае от инъекций довольно легко защититься с помощью quotename.
Но лучше сделать как предложил Ennor Tiegael.
11 июл 13, 12:42    [14551728]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить