gpt4 book ai didi

mysql - 是否可以将 cfqueryparams 作为准备好的语句参数发送到 MySQL?

转载 作者:行者123 更新时间:2023-11-29 11:23:07 25 4
gpt4 key购买 nike

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

这不如准备好的语句有效,并且如果 ColdFusion 服务器转义实现存在缺陷,则更有可能发生 SQL 注入(inject)。

Coldfusion 调试和跟踪将使查询看起来好像是作为准备好的语句进行处理的,但 MySQL 却显示不然。

这可以通过记录 sql 查询来证明: set global general_log=1;

观察日志, tail -f /var/lib/mysql/$(uname -n).log

日志应显示查询中的 PREPARE 语句和问号,但日志显示完整的查询,其中变量替换为问号。

是否可以强制 ColdFusion 使用正确的 PREPARE<cfquery> 时使用语句而不是字符串替换和<cfqueryparam>用于 MySQL 数据库?如果归结为 JDBC 连接字符串,则必须更改默认设置才能使用准备好的语句。

我认为答案可能存在于这里的某个地方:

最佳答案

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

useServerPrepStmts=true 添加到 CFIDE (/cfide/administrator/enter.cfm) 下的 JDBC Connection String 参数>数据与服务>数据源

关于mysql - 是否可以将 cfqueryparams 作为准备好的语句参数发送到 MySQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38616800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com