2016-07-27 18 views
0

Bei Verwendung von <cfquery> und <cfqueryparam> (oder queryExecute) wendet ColdFusion (oder möglicherweise der JDBC) eine eigene Zeichenfolgenersetzung auf die ursprüngliche SQL-Abfrage an, bevor sie an den MySQL-Server gesendet wird.Ist es möglich, cfqueryparams als vorbereitete Anweisungsparameter an MySQL zu senden?

Dies ist nicht so effizient wie eine vorbereitete Anweisung und hat ein größeres Potenzial für die SQL-Injektion, wenn die Implementierung der ColdFusion-Server fehlschlägt.

Coldfusion Debugging und Ablaufverfolgung wird es so aussehen, als ob die Abfrage als eine vorbereitete Anweisung verarbeitet wurde, aber MySQL verrät nichts anderes. set global general_log=1;

Und gerade die Protokolle, tail -f /var/lib/mysql/$(uname -n).log

Das Protokoll in den Abfragen Aussagen und Fragezeichen, sondern zeigt das Protokoll die vollen PREPARE zeigen soll:

Dies kann durch Protokollierung von SQL-Abfragen nachgewiesen werden Abfrage mit Variablen, die in die Fragezeichen eingefügt werden.

Ist es möglich, ColdFusion zu zwingen, korrekte PREPARE-Anweisungen statt Zeichenkettenersatz zu verwenden, wenn <cfquery> und <cfqueryparam> gegen eine MySQL-Datenbank verwendet werden? Wenn es sich um die JDBC-Verbindungszeichenfolge handelt, müssen die Standardeinstellungen geändert werden, um vorbereitete Anweisungen verwenden zu können.

Ich denke, die Antwort hier irgendwo existieren können:

Antwort