Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie verhindert SQLParameter die SQL-Injection?

Grundsätzlich, wenn Sie einen SQLCommand ausführen mit SQLParameters , werden die Parameter niemals direkt in die Anweisung eingefügt. Stattdessen eine gespeicherte Systemprozedur namens sp_executesql wird aufgerufen und erhält die SQL-Zeichenfolge und das Array von Parametern.

Wenn sie als solche verwendet werden, werden die Parameter isoliert und als Daten behandelt, anstatt aus der Anweisung geparst zu werden (und sie somit möglicherweise zu ändern), sodass der Inhalt der Parameter niemals "ausgeführt" werden kann. Sie erhalten nur einen dicken Fehler, dass der Parameterwert in irgendeiner Weise ungültig ist.