Rolf B: Fragwürdiger Schutz einer SQL-Abfrage?

Beitrag lesen

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