Каковы последствия для безопасности sp_executesql?

9

По умолчанию в SQL Server [public]роль имеет EXECUTEправа на sp_executesql.

Тем не менее, я унаследовал сервер базы данных, на котором предыдущий администратор БД отозвал EXECUTEправо sp_executesql.

В качестве временного обходного пути я предоставляю EXECUTEправа sp_executesqlпо мере необходимости (через роль в базе данных master). Но это начинает быть болью обслуживания.

Если я верну EXECUTEпублике, есть ли какие-то последствия, о которых мне нужно знать?

AlexLostDba
источник

Ответы:

8

Никто. sp_executesqlвыполняет SQL в том же контексте и привилегиях, что и исходный вызывающий объект, который выполняет тот же SQL. Существует множество случаев, когда динамический SQL неизбежен.

Ремус Русану
источник
3
-1 , потому что ответ не означает , что Microsoft отмечает , что может представлять угрозу для безопасности msdn.microsoft.com/en-us/library/ms188001(v=sql.105).aspx
miracle173
@ miracle173 - Честно говоря, это плохо написанный динамический SQL, который не является угрозой безопасности sp_executesql. Если предположить, что требование динамического SQL, а затем отключение, sp_executesqlможет на самом деле увеличить риск, по крайней мере, это позволит вам параметризировать запросы (в отличие от EXEC)
Martin Smith,
2
В то время как риск инъекции sql никогда нельзя недооценивать, отключение sp_executesqlне является соответствующим смягчением. Подавляющее большинство ошибок SQL-инъекций возникает в клиенте, когда оператор SQL создается «вручную» путем объединения частей SQL с входными переменными, а затем выполняется «как есть». Для всех этих случаев sp_executesqlотключение ничего не помогает.
Ремус Русану