升级ColdFusion 2018到2021时如何解决代码分析器报错问题
问题原因
- 核心触发代码分析器报错有两个原因:
function是SQL和ColdFusion的双保留关键字,直接作为字段名使用不符合静态代码校验的语法规范- 直接将ColdFusion变量拼接进SQL语句,会被代码分析器识别为存在SQL注入风险
- ColdFusion 2021的静态代码分析规则比2018版严格很多,旧版本能正常执行的不规范写法在新版本会触发报错提示
解决方案
- 对作为字段名的保留字
function添加对应数据库的转义符:- MySQL/MariaDB 使用反引号包裹:
`function` - SQL Server 使用方括号包裹:
[function] - Oracle/PostgreSQL 使用双引号包裹:
"function"
- MySQL/MariaDB 使用反引号包裹:
- 替换SQL中的变量拼接逻辑,使用
<cfqueryparam>标签传参,既消除SQL注入风险,也符合2021版的代码校验规则
修改后代码示例(以Oracle数据库为例)
<Cfquery name="getcheck" datasource="***"> Select userid, "function" as funct from users where ','||UPPER("function")||',' like <cfqueryparam value="%,#UCase(Function)#,%" cfsqltype="cf_sql_varchar"> </Cfquery>
修改后重新扫描即可消除代码分析器的报错,同时原有业务逻辑完全不受影响。
内容的提问来源于stack exchange,提问作者suraj p Yedre
相关产品推荐
相关产品推荐

