Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Impedisci SQL injection nella clausola ORDER BY

Se avete per gestire le stringhe, quindi la white list è la soluzione migliore. Innanzitutto, sortDirection dovrebbe essere abbastanza banale da inserire nella white list:un confronto senza distinzione tra maiuscole e minuscole con "asc" / "desc" e dovresti essere a posto. Per gli altri, la mia preferenza sarebbe autorizzare le colonne conosciute , magari passando il Type previsto per i dati e la convalida. Ma in un attimo, potresti limitare l'espressione regolare per (diciamo) far rispettare che sono tutti rigorosamente alfanumerico (nell'intervallo a-z, A-Z, 0-9 - forse trattino basso se necessario) - quindi aggiungi [] , cioè

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

Ma:una rigorosa lista bianca di colonne conosciute sarebbe molto meglio, così come un'enumerazione per la direzione.