我需要动态构造一组 JOIN 语句,其中表名和列名是从另一个 ColdFusion 查询传入的。当将字符串值传递到语句中时,CFQUERYPARAM 在其周围添加单引号 - 这是 CFQUERYPARAM 的一部分。鉴于这会破坏 SQL 语句,在这种情况下不使用 CFQUERYPARAM 而是确保传入查询被清理是否可以接受,或者是否有允许使用 CFQUERYPARAM 的方法? (我可以使用 Fusebox 中的电路/ fuse 权限锁定这些代码片段。)
谢谢。
最佳答案
cfqueryparam
不添加单引号 - 它使用绑定(bind)变量。
我立即对“动态构造一组 JOIN 语句”这一说法产生了怀疑 - 如果您正在动态加入,这听起来并不一定是正确地做事。
但是,对于表名/列名,一旦您确定完全 sanitizer - 如果cfqueryparam
不起作用,您需要 cf 变量 - 那么是,您可以直接使用 CF 变量。
注意:要安全 sanitizer ,您可以使用 rereplacenocase(table_name,'[^a-z_]','','all')
删除除 a-z 和下划线以外的所有内容。
关于sql - 使用 CFQUERYPARAM 在 SQL 中指定表/列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/676761/