gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 10:29:26 25 4
gpt4 key购买 nike

有人可以解释一下,如果不包括 cfqueryparam 的 cfsqltype 对 SQL 注入(inject)保护仍然有用吗?以及带有 cfsqltype 和 w/o cfsqltype 的 cfqueryparam 实际发生的情况。

<!--- 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在创建prepared statement时与相应的方法匹配。
如果您指定了一个类型,那么 ColdFusion 需要能够将变量转换为该类型,如果不能,它将在将查询发送到数据库之前抛出异常。
当您省略 cfsqltype它可能会调用 setObjectsetString .接下来发生的行为取决于您此时使用的 JDBC 驱动程序。我见过一些情况,即使您传入有效变量,省略类型也会导致错误,想到的一种情况是在 MySQL 上使用日期和日期时间。
要考虑的另一件事是,如果您省略 cfsqltype假设一个整数字段,但您传递了一个非整数值,如果您指定 cfsqltype,ColdFusion 可能在连接到数据库并发送查询之前抛出异常。 ,但是没有它,您会浪费数据库服务器上的数据库连接和执行时间。

关于sql - 不包括 cfqueryparam 的 cfsqltype 对 sql 注入(inject)保护仍然有用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6913696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com