微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

不包括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时发送查询但没有它您在数据库服务器上浪费数据库连接和执行时间.

原文地址:https://www.jb51.cc/mssql/77706.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐