从安全验证的角度来看,两者之间是否有区别:
stmt.setObject(1, theObject);
和
stmt.setString(1, theObject);
?
我知道在这种情况下 theObject
是一个 String
但我有兴趣使这段代码的一部分更通用以涵盖其他情况,并且想知道是否从安全角度考虑输入验证受到影响
最佳答案
可以使用 ssetObject()
,因为 jdbc 将尝试为所有 java.lang.*
类型进行类型解析。
但是,以这种方式将任意 SQL 字符串传递到数据库存在潜在问题 - 安全漏洞:如果没有对用于构建 SQL 字符串的任何参数进行非常明智的验证,您容易受到各种类型的 SQL 插入攻击。
小心将未类型化的 null
传递给 setObject()
关于java - 以最安全的方式使用准备好的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13228362/