sql >> Database >  >> RDS >> Sqlserver

Voorkom SQL-injectie in ORDER BY-clausule

Als je hebt om in strings te handelen, dan is white-listing de beste keuze. Ten eerste, sortDirection zou vrij triviaal moeten zijn om op de witte lijst te zetten:een niet-hoofdlettergevoelige vergelijking met "asc" / "desc" en je zou klaar moeten zijn. Voor de anderen zou mijn voorkeur uitgaan naar een witte lijst naar bekende kolommen , misschien door het verwachte Type . door te geven voor de gegevens en validatie. Maar met een absoluut snuifje zou je met regex kunnen beperken om (laten we zeggen) af te dwingen dat ze allemaal strikt zijn alfanumeriek (in het bereik a-z, A-Z, 0-9 - eventueel onderstrepingstekens indien nodig) - en voeg vervolgens [] toe , d.w.z.

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

Maar:een strikte witte lijst van bekende kolommen zou veel beter zijn, evenals een opsomming voor de richting.



  1. Wat gebeurt er met duplicaten bij het invoegen van meerdere rijen?

  2. SQL SELECTEER MAX

  3. 100% veilige manier om html op te slaan in MySQL

  4. MySQL - Alle permutaties tonen?