Знатокам SQL
выкрутиться можно, например, так
CREATE PROCEDURE CreateLogin
@password NVARCHAR(50
@database NVARCHAR(50)
AS
BEGIN
EXEC ('
CREATE LOGIN @login WITH
PASSWORD = ''' + @password + ''',
DEFAULT_DATABASE = ''' + @database + ''',
CHECK_EXPIRATION = OFF,
CHECK_POLICY = OFF
')
END
Что посоветуешь, чтобы бороться с SqlInjection в этом случае?
а это обязательно из хп делать? в приложение этот динамических SQL нельзя засунуть? там драйвер параметры правильно подставит.
Не. Это лучше делать на сервере. Не хватало еще клиенту динамический SQL разрешать выполнять. Дырища в безопасности.
Я подумал и решил, что достаточно будет сделать в хранимке REPLACE на параметр и заменить каждую одиночную кавычку на двойную.
Это будет безопасно?
Параметры, например, в строке SQL не парсит?
Я подумал и решил, что достаточно будет сделать в хранимке REPLACE на параметр и заменить каждую одиночную кавычку на двойную.
Это будет безопасно?
Параметры, например, в строке SQL не парсит?
Это лучше делать на сервере.Ну если ты сам всё знаешь, то зачем спрашиваешь-то?
Или трудно обработать в приложении строку перед подачей на сервер?Дырища в безопасности.Не в безопасности дырища совсем.
Я хотел хранимку сделать и дать права на ее выполнение опреденной группе пользователей.
Перед подачей не трудно обработать, но я предпочитаю, чтобы сервер был устойчив к хаканью, а не клиент.
Клиента на крайняк можно и декомпилить, и подменить.
Так как насчет дабл-квотинга? Поможет?
Перед подачей не трудно обработать, но я предпочитаю, чтобы сервер был устойчив к хаканью, а не клиент.
Клиента на крайняк можно и декомпилить, и подменить.
Так как насчет дабл-квотинга? Поможет?
> Так как насчет дабл-квотинга? Поможет?
нет, конечно
надо еще, как минимум, спец. символы квотить
нет, конечно
надо еще, как минимум, спец. символы квотить
Есть функция QUOTENAME. По описалову так и не понял, достаточно ли ее будет.
Может, кто пользовал и знает?
Вообще, проблема-то стандратная. Неужели никто?
Может, кто пользовал и знает?
Вообще, проблема-то стандратная. Неужели никто?
Дичайший пиздёж.
Вообще, проблема-то стандратная.
Ни один вменяемый администратор не даёт прямого доступа в SQL заведомо ненадежным в плане инжекции лицам.
Не хватало еще клиенту динамический SQL разрешать выполнять. Дырища в безопасности.вовсе не дырмща, а всего лишь исчезает один из уровней управления безопасностью, в некоторых архитектурах этот уровень нахрен не нужен, поэтому я и спросил какая у тебя ситуация
Поменьше эмоций!
Двухзвенка, че поделать...
Двухзвенка, че поделать...
нет, конечно
надо еще, как минимум, спец. символы квотить
вроде не надо. Насколько я понял из BOL, строковые константы в MSSQL могу содержать любые символы
Character string constants
Character string constants are enclosed in single quotation marks and include alphanumeric characters (a-z, A-Z, and 0-9) and special characters, such as exclamation point (! at sign (@ and number sign (#). Character string constants are assigned the default collation of the current database, unless the COLLATE clause is used to specify a collation. Character strings typed by users are evaluated through the code page of the computer and are translated to the database default code page if necessary. For more information, see Collations.
...
If a character string enclosed in single quotation marks contains an embedded quotation mark, represent the embedded single quotation mark with two single quotation marks. This is not necessary in strings embedded in double quotation marks.
Т.е. достаточно заменить только апострофы.
Благодарю!
Оставить комментарий
aleks058
SQL Serevr 2005.Нужно программно создать логин.
Делаю хранимку с необходимыми параметрами.
В ней пытаюсь написать:
Получаю сообщение, что синтаксис выражения неверный.
Как выкрутиться?