Hallo Julius,
als ersten Schritt könnte man die Regex zu
/([a-z0-9_]+\.)?[a-z0-9_]+\s+(asc|desc)/i
ändern, d.h.
- case insensitive
- explizite Festlegung eines Table-Aliasnamens als Column-Prefix
- asc und desc als einzige Optionen
Ich würde das aber nicht tun. Nicht wegen der möglichen SQL Errors. Aber die
Liste von erlaubten Spalten und Sortierreihenfolgen
ist besser. Bleib dabei. Denn
Ein Angreifer kann herausfinden, welche Spalten die Tabelle in der Datenbank hat
Diese Erkenntnis kann Basis für andere (hoffentlich gut abgefangene) SQL Injections sein.
Es gibt noch einen weiteren Grund: Je nach Anforderung kann es nötig sein, nach einer Expression zu sortieren. Das kannst Du auf diese Weise nicht realisieren.
Rolf
--
sumpsi - posui - obstruxi
sumpsi - posui - obstruxi