不包括cfqueryparam的cfsqltype对sql注入保护仍然有用吗?
发布时间:2020-12-12 06:48:27 所属栏目:MsSql教程 来源:网络整理
导读:有人解释如果不包括cfqueryparam的cfsqltype仍然对SQL注入保护有用吗?以及cfqueryparam与cfsqltype和w / o cfsqltype实际发生的情况. !--- without cfsqltype---cfqueryparam value="#someValue#" !--- with cfsqltype---cfqueryparam value="#someValue#" c
有人解释如果不包括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时发送查询但没有它您在数据库服务器上浪费数据库连接和执行时间. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |