Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SqlParameter n'autorise pas le nom de la table - d'autres options sans attaque par injection SQL ?

Optez pour une liste blanche. Il ne peut y avoir qu'un ensemble fixe de possibles des valeurs correctes pour le nom de la table de toute façon - du moins, donc j'espère.

Si vous n'avez pas de liste blanche de noms de table, vous pouvez commencer par une liste blanche de caractères - si vous le limitez à A-Z, a-z et 0-9 (pas de ponctuation du tout), cela devrait éliminer une grande partie du problème. (Bien sûr, cela signifie que vous ne supportez pas les tables avec des noms impairs... nous ne connaissons pas vraiment vos besoins ici.)

Mais non, vous ne pouvez pas utiliser de paramètres pour les noms de table ou de colonne - uniquement des valeurs. C'est généralement le cas dans les bases de données; Je ne me souviens pas en avoir vu un qui fait paramètres de support pour cela. (j'ose dire qu'il y en a, bien sûr...)