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

SqlParameter erlaubt keinen Tabellennamen - andere Optionen ohne SQL-Injection-Angriff?

Gehen Sie für eine weiße Liste. Es kann nur eine feste Menge von möglichen geben sowieso korrekte Werte für den Tabellennamen - zumindest hoffe ich das.

Wenn Sie keine Whitelist mit Tabellennamen haben, können Sie mit einer Whitelist mit Zeichen beginnen - Wenn Sie es auf A-Z, a-z und 0-9 (überhaupt keine Interpunktion) beschränken, sollte das viele Bedenken beseitigen. (Das bedeutet natürlich, dass Sie keine Tabellen mit ungeraden Namen unterstützen ... wir kennen Ihre Anforderungen hier nicht wirklich.)

Aber nein, Sie können keine Parameter für Tabellen- oder Spaltennamen verwenden - nur Werte. Das ist typischerweise bei Datenbanken der Fall; Ich kann mich nicht erinnern, einen gesehen zu haben, der tat Unterstützungsparameter dafür. (Ich wage zu behaupten, dass es natürlich welche gibt...)