sql >> Base de Datos >  >> RDS >> Sqlserver

Evitar la inyección de SQL en la cláusula ORDER BY

Si tiene para negociar en cadenas, entonces la lista blanca es su mejor apuesta. En primer lugar, sortDirection debería ser bastante trivial para la lista blanca:una comparación que no distingue entre mayúsculas y minúsculas con "asc" / "desc" y usted debe estar listo. Para los demás, mi preferencia sería incluir en la lista blanca las columnas conocidas. , quizás pasando el Type esperado para los datos y la validación. Pero en un apuro absoluto, podría restringir con expresiones regulares para (digamos) hacer cumplir que todos son estrictamente alfanumérico (en el rango a-z, A-Z, 0-9, tal vez un guión bajo si es necesario), y luego agregue [] , es decir,

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

Pero:una lista blanca estricta de columnas conocidas sería mucho mejor, al igual que una enumeración para la dirección.