Quais são as implicações de segurança do sp_executesql?

9

Por padrão, no SQL Server, a [public]função tem EXECUTEdireitos sp_executesql.

No entanto, eu herdei um servidor de banco de dados em que o DBA anterior revogou o EXECUTEdireito sp_executesql.

Como solução temporária, concedo EXECUTEdireitos sp_executesqlconforme necessário (por meio de uma função no banco de dados mestre). Mas isso está começando a ser uma dor de manutenção.

Se eu conceder de EXECUTEvolta ao público, há alguma repercussão que eu precise estar ciente?

AlexLostDba
fonte

Respostas:

8

Nenhum. sp_executesqlexecuta SQL, exatamente no mesmo contexto e privilégios que o chamador original executaria o mesmo SQL. Existem muitos casos em que o SQL dinâmico é inevitável.

Remus Rusanu
fonte
3
-1 porque a resposta não indica que as notas da Microsoft que pode haver um risco de segurança msdn.microsoft.com/en-us/library/ms188001(v=sql.105).aspx
miracle173
@ miracle173 - Para ser justo, é SQL dinâmico mal escrito que não é o risco à segurança sp_executesql. Assumindo uma exigência SQL dinâmico, em seguida, a desativação sp_executesqlpode realmente aumentar o risco de, pelo menos, que lhe permite parametrizar as consultas (ao contrário EXEC)
Martin Smith
2
Embora o risco de injeção de sql nunca possa ser subestimado, desabilitar sp_executesqlnão é a atenuação apropriada. A esmagadora maioria dos erros de injeção SQL ocorre no cliente quando a instrução SQL é criada 'manualmente' concatenando partes do SQL com variáveis ​​de entrada e depois executa 'como está'. Para todos os casos, sp_executesqlestar desabilitado não ajuda em nada.
Remus Rusanu