不包括cfqueryparam的cfsqltype对sql注入保护仍然有用吗?

前端之家收集整理的这篇文章主要介绍了不包括cfqueryparam的cfsqltype对sql注入保护仍然有用吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有人解释如果不包括cfqueryparam的cfsqltype仍然对sql注入保护有用吗?以及cfqueryparam与cfsqltype和w / o cfsqltype实际发生的情况.
<!--- without cfsqltype--->
<cfqueryparam value="#someValue#"> 

<!--- with cfsqltype--->
<cfqueryparam value="#someValue#" cfsqltype="cf_sql_char">

解决方法

为了更好地了解cfsqltype在幕后的内容,请查看Java / JDBC PreparedStatement类: http://download.oracle.com/javase/6/docs/api/java/sql/PreparedStatement.html

您将注意到各种setInt,setDate等方法 – 我的理解是cfsqltype在创建预准备语句时与相应的方法匹配.

如果指定了一个类型,那么ColdFusion需要能够将变量转换为该类型,如果不能,它会在将查询发送到数据库之前抛出异常.

省略cfsqltype时,它可能调用setObject或setString.接下来发生的事情的行为取决于此时使用的JDBC驱动程序.我已经看到一些情况,即使你传入有效的变量,省略类型也会导致错误,我想到的是在MysqL上使用日期和日期时间.

另一件需要考虑的事情是,如果省略cfsqltype,我们说一个整数字段,但是你传递一个非整数值,ColdFusion可能会在连接到数据库之前抛出异常并在你指定cfsqltype时发送查询但没有它您在数据库服务器上浪费数据库连接和执行时间.

猜你在找的MsSQL相关文章