Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zapobiegaj wstrzykiwaniu SQL w klauzuli ORDER BY

Jeśli masz handlować w łańcuchach, najlepiej jest umieścić na białej liście. Po pierwsze, sortDirection powinno być dość trywialne na białej liście:porównanie bez uwzględniania wielkości liter do "asc" / "desc" i powinieneś być ustawiony. W przypadku innych wolę umieścić na białej liście znane kolumny , być może przekazując oczekiwany Type dla danych i walidacji. Ale w razie potrzeby możesz ograniczyć za pomocą wyrażenia regularnego, aby (powiedzmy) wymusić, że wszystkie są ściśle alfanumeryczne (w zakresie a-z, A-Z, 0-9 - w razie potrzeby może być podkreślone) - a następnie dodaj [] , czyli

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

Ale:ścisła biała lista znanych kolumn byłaby znacznie lepsza, podobnie jak wyliczenie kierunku.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SSIS. Jak skopiować dane z jednej tabeli do różnych tabel?

  2. SQL:Usuwanie zduplikowanych rekordów w SQL Server

  3. System.Data.SqlTypes.SqlTypeException:przepełnienie SqlDateTime

  4. Jak wstawić wyniki procedury składowanej do tabeli tymczasowej w SQL Server

  5. Przewodnik po CTE w SQL Server