我有点不好意思地问这个问题,因为我应该知道答案。有人可以解释一下在下面的代码中是否以及如何发生注入?
<cfquery>
select * from tableName
where fieldName = '#value#'
</cfquery>
我特别好奇注入尝试和其他恶意输入,而不是处理“正常”用户输入的最佳实践或输入验证。我看到人们强烈主张使用 CFQueryParam,但不认为我明白这一点。如果用户输入已被验证与数据库模式的一致性(例如,数字数据库字段的输入必须是数字),使用 CFQueryParam 是否还有其他收获?什么<cfqueryparam CFSQLType = "CF_SQL_VARCHAR">
做'#value#'
不做?