Was sind die Sicherheitsauswirkungen von sp_executesql?

9

In SQL Server hat die [public]Rolle standardmäßig EXECUTERechte für sp_executesql.

Ich habe jedoch einen Datenbankserver geerbt, auf dem der vorherige DBA das EXECUTERecht auf widerrufen hat sp_executesql.

Als vorübergehende Problemumgehung habe ich EXECUTEnach sp_executesqlBedarf Rechte gewährt (über eine Rolle in der Master-Datenbank). Aber dies beginnt ein Unterhaltsschmerz zu sein.

Wenn ich EXECUTEder Öffentlichkeit etwas zurückgebe, gibt es irgendwelche Auswirkungen, die ich beachten muss?

AlexLostDba
quelle

Antworten:

8

Keiner. sp_executesqlführt SQL unter genau demselben Kontext und denselben Berechtigungen aus, wie der ursprüngliche Aufrufer dasselbe SQL ausführen würde . Es gibt viele, viele Fälle, in denen dynamisches SQL unvermeidbar ist.

Remus Rusanu
quelle
3
-1 , weil die Antwort , dass es nicht , dass Microsoft Notizen anzeigen kann ein Sicherheitsrisiko sein msdn.microsoft.com/en-us/library/ms188001(v=sql.105).aspx
miracle173
@ miracle173 - Um fair zu sein, ist es schlecht geschriebenes dynamisches SQL, das das Sicherheitsrisiko nicht darstellt sp_executesql. Wenn Sie eine dynamische SQL-Anforderung annehmen und dann deaktivieren, sp_executesqlkann dies das Risiko tatsächlich erhöhen, da Sie zumindest die Abfragen parametrisieren können (im Gegensatz zu EXEC)
Martin Smith,
2
Während das Risiko einer SQL-Injektion niemals unterschätzt werden kann, sp_executesqlist das Deaktivieren keine angemessene Minderung. Die überwiegende Mehrheit der SQL-Injection-Fehler tritt im Client auf, wenn die SQL-Anweisung "von Hand" erstellt wird, indem SQL-Teile mit Eingabevariablen verkettet und dann "wie sie sind" ausgeführt werden. In all diesen Fällen sp_executesqlhilft es nichts, behindert zu sein.
Remus Rusanu