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?

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.