提问人:MrPeriodical 提问时间:6/23/2023 最后编辑:rrkMrPeriodical 更新时间:6/23/2023 访问量:134
如何在 ColdFusion 站点上更正此 SQL 注入?
How to correct this SQL Injection on a ColdFusion site?
问:
对我公司创建的一个小型内部网站的代码进行了自动审查,并要求我修复检测到的漏洞。
我该如何纠正这个问题?原来的开发人员早就离开了公司,我对coldfusion不太熟悉。
<cfquery name="qry_Products" datasource="#request.mssql_dsn#" username="#request.mssql_uid#" password="#request.mssql_pwd#">
UPDATE tblProduct
SET #form.F# = <cfif currVal is 1>0<cfelse>1</cfif>
WHERE ID = #form.ID#
</cfquery>
自动审核显示第 3 行和第 4 行存在问题。我想问题是和.form.F
form.ID
答:
10赞
rrk
6/23/2023
#1
窗体中的动态 SQL 表列名称不是最佳方法。但是,如果必须,那么我将创建一个映射结构,用于控制最终在原始查询中呈现的值,并且您应该使用 ,这将防止任何 sql 注入尝试。form.ID
<cfqueryparam>
不过,我还是建议使用正确的列名而不是动态变量。
<cfset columnValueMap = {
'formValue1': 'dbColumnName1',
'formValue2': 'dbColumnName2',
'formValue3': 'dbColumnName3'
}>
<cfif structKeyExists(columnValueMap, form.F)>
<cfquery name="qry_Products" datasource="#request.mssql_dsn#" username="#request.mssql_uid#" password="#request.mssql_pwd#">
UPDATE tblProduct
SET #columnValueMap[form.F]# = <cfif currVal is 1>0<cfelse>1</cfif>
WHERE ID = <cfqueryparam value="#form.ID#" cfsqltype="integer">
</cfquery>
</cfif>
评论