Jim*_*Jim 6 java sql validation jdbc prepared-statement
从安全验证的角度来看,两者之间是否存在差异:
stmt.setObject(1, theObject);
和
stmt.setString(1, theObject);?
我知道在这种情况下theObject是一个,String但我有兴趣使这部分代码更通用,以涵盖其他情况,并想知道输入验证的安全性角度是否受到影响
恕我直言
鉴于 JDBC 是数据库服务器的一个非常轻的包装器(它除了生成 SQL 供数据库直接解释之外几乎没有其他作用),我希望
stmt.setObject(1, theObject);
Run Code Online (Sandbox Code Playgroud)
完全一样
stmt.setString(1, theObject == null ? "null" : theObject.toString())`;
Run Code Online (Sandbox Code Playgroud)
当数据库处理生成的 SQL 并查找它是否适合时,将发生“类型验证”。