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

SQL-Injection in ORDER BY-Klausel verhindern

Wenn Sie haben um mit Zeichenfolgen zu handeln, dann ist Whitelisting die beste Wahl. Erstens sortDirection sollte für die Whitelist ziemlich trivial sein:ein Vergleich ohne Berücksichtigung der Groß-/Kleinschreibung mit "asc" / "desc" und du solltest eingestellt sein. Für die anderen würde ich es vorziehen, bekannte Spalten auf die weiße Liste zu setzen , vielleicht indem Sie den erwarteten Type übergeben für die Daten und Validierung. Aber zur Not könnten Sie mit Regex einschränken, um (sagen wir) zu erzwingen, dass sie alle streng sind alphanumerisch (im Bereich von a-z, A-Z, 0-9 - ggf. Unterstrich) - und fügen Sie dann [] hinzu , also

return string.Format("[{0}] {1}", sortColumn, sortDirection);

Aber:Eine strenge Whitelist bekannter Spalten wäre viel besser, ebenso wie eine Enum für die Richtung.