¿Cuáles son las implicaciones de seguridad de sp_executesql?

9

De manera predeterminada, en SQL Server, el [public]rol tiene EXECUTEderechos sp_executesql.

Sin embargo, heredé un servidor de base de datos donde el DBA anterior revocó el EXECUTEderecho sp_executesql.

Como solución temporal, he estado otorgando EXECUTEderechos sp_executesqlsegún sea necesario (a través de un rol en la base de datos maestra). Pero esto está comenzando a ser un dolor de mantenimiento.

Si devuelvo EXECUTEal público, ¿hay alguna repercusión que deba tener en cuenta?

AlexLostDba
fuente

Respuestas:

8

Ninguna. sp_executesqlejecuta SQL, bajo exactamente el mismo contexto y privilegios que el llamador original ejecutaría el mismo SQL. Hay muchos, muchos casos en los que el SQL dinámico es inevitable.

Remus Rusanu
fuente
3
-1 porque la respuesta no indica que Microsoft nota que puede haber un riesgo de seguridad msdn.microsoft.com/en-us/library/ms188001(v=sql.105).aspx
miracle173
@ miracle173 - Para ser justos, el SQL dinámico mal escrito no es el riesgo de seguridad sp_executesql. Asumir un requisito de SQL dinámico y luego deshabilitarlo sp_executesqlpodría aumentar el riesgo, ya que al menos eso le permite parametrizar las consultas (a diferencia EXEC)
Martin Smith
2
Si bien el riesgo de inyección de sql nunca puede subestimarse, la desactivación sp_executesqlno es la mitigación adecuada. La abrumadora mayoría de los errores de inyección SQL ocurren en el cliente cuando la declaración SQL se construye 'a mano' mediante la concatenación de piezas de SQL con variables de entrada y luego se ejecuta 'tal cual'. Para todos esos casos, la sp_executesqldesactivación no ayuda en nada.
Remus Rusanu