So vermeiden Sie die Injektion zum Sortieren der Abfrage nach dem Laufzeitwert

8

Dies ist ein häufiges Problem, wenn die Abfrage es Ihnen ermöglicht, eine Spalte nach übergebenen Argumenten zu sortieren. Unten ist, was ich mit ColdFusion ORM versuche. Ich weiß, dass dies eine Sicherheitsschleife für SQL-Injection hinzufügen wird. Da ORDER BY keinen Parameter anlegen kann, müssen wir ihn an die Abfrage selbst anhängen. Ich bin bereits einigen verwundbaren Charakteren entkommen, aber ich kann nicht sagen, dass das sicher ist (von der SQL-Injektion). ESAPI stellt die Funktion encodeForSQL() zur Verfügung, aber das funktioniert nicht SQL Server (es funktioniert jedoch mit MYSQL).

Ein anderer Ansatz, den ich normalerweise verwende, besteht darin, dass ich, statt einen Spaltennamen in den Argumenten zu übergeben, einen numerischen Wert übergebe und switch-case dem richtigen Spaltennamen anpasst ... aber das ist eine Erhöhung der Wartung.

Gibt es eine gute Methode, um Sortierparameter in SQL (oder HQL) zu umgehen, wenn wir benannte Parameter nicht verwenden können?

%Vor%     
Pritesh Patel 18.12.2013, 04:45
quelle

1 Antwort

7

Ich würde wahrscheinlich nur den Wert des eingehenden sortcolumn -Arguments anhand einer bekannten Liste von geeigneten Werten validieren. Abgesehen von SQLI, möchten Sie sicher nicht nur auf any -Spalten im zugrunde liegenden Schema sortieren?

zB:

%Vor%     
Adam Cameron 18.12.2013 08:36
quelle

Tags und Links