java JDBI@bind和bind方法是否不受SQL注入的影响?
我已经用一些SQL注入尝试测试了@bind注释,似乎输入已被清理。对于bind方法,我不确定它是否也是真的
有人能用一些参考资料来证实我的猜测是否正确吗?我在文件中找不到任何东西。谢谢
下面是一个使用绑定注释的示例
@SqlQuery("SELECT count(*)\n" +
"FROM member_preference_value WHERE member_id = :memberId and preference_id=:preferenceId")
int hasUserSetPreference(@Bind("preferenceId") Integer preferenceId,@Bind("memberId") String memberId) throws Exception;
下面是一个使用bind方法的示例
Update update = handle.createStatement(sqlQuery)
.bind("bookmark_id", savedSearch.getBookmarkId())
# 1 楼答案
您的两个示例都在内部使用JDBI参数绑定机制,最终归结为标准的JDBC PreparedStatement
setXxx()
方法系列。 您可以通过跟踪JDBI源代码,从bind方法到StringArgument或类似的类来确认这一点,在这些类中,每种类型都实现了SQL查询参数绑定。 因此,使用JDBIbind
并不比使用普通的JDBCPreparedStatement
和setString
/setInt
/setXxx
方法更危险