是否可以将cfqueryparams作为预处理语句参数发送给MySQL?

时间:2016-07-27 15:05:38

标签: mysql coldfusion coldfusion-11

使用javax.sql.DataSource<cfquery>(或<cfqueryparam>)时,ColdFusion(或者可能是JDBC)会在将原始SQL查询发送到MySQL服务器之前将其自己的字符串替换应用

如果冷却实现的ColdFusion服务器存在缺陷,这不如预准备语句有效,并且具有更大的SQL注入潜力。

Coldfusion调试和跟踪将使它看起来好像查询被处理为准备好的语句,但MySQL却以其他方式显示。

这可以通过记录sql查询来证明: queryExecute

看着日志, set global general_log=1;

日志应在查询中显示PREPARE语句和问号,而是日志显示完整查询,并将变量替换为问号。

当对{MySQL}数据库使用tail -f /var/lib/mysql/$(uname -n).logPREPARE时,是否可以强制ColdFusion使用正确的<cfquery>语句而不是字符串替换?如果它归结为JDBC连接字符串,则必须从默认设置更改为使用预准备语句。

我认为答案可能存在于某处:

1 个答案:

答案 0 :(得分:1)

JDBC驱动程序的默认行为是根据https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-configuration-properties.html

设置useServerPrepStmts=false

useServerPrepStmts=true添加到Connection String下的CFIDE(/cfide/administrator/enter.cfm)中的JDBC Data & Services > Datasources参数。