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:
- https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-configuration-properties.html
- https://helpx.adobe.com/coldfusion/configuring-administering/data-source-management-for-coldfusion.html#DataSourceManagementforColdFusion-ConnectingtoMySQL
- condition for creating a prepared statement using cfqueryparam?
- https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-useconfigs.html
- https://dev.mysql.com/doc/connector-odbc/en/connector-odbc-configuration-connection-parameters.html