sql >> Databasteknik >  >> RDS >> Sqlserver

Förhindra SQL-injektion i ORDER BY-satsen

Om du har för att handla i strängar, då är vitlista din bästa insats. För det första, sortDirection borde vara ganska trivialt att vitlista:en skiftlägesokänslig jämförelse med "asc" / "desc" och du borde vara inställd. För de andra skulle jag föredra att vitlista till kända kolumner , kanske genom att ange den förväntade Type för data och validering. Men vid ett absolut tillfälle kan du begränsa med regex för att (säg) genomdriva att de alla är strängt alfanumerisk (i intervallet a-z, A-Z, 0-9 - kanske understreck om det behövs) - och lägg sedan till [] , dvs.

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

Men:en strikt vitlista över kända kolumner skulle vara mycket bättre, liksom en uppräkning för riktningen.



  1. Logga in med externa tjänster

  2. Vad är det mest effektiva sättet att välja de sista n raderna i en tabell utan att ändra tabellens struktur?

  3. Ruby och MySQL UTF-8-tecken

  4. SQL-injektion, citat och PHP