我已经用一些SQL注入尝试测试了@bind注释,并且似乎输入被净化了。对于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())发布于 2017-01-23 17:41:58
这两个示例都在内部使用JDBI参数绑定机制,它最终归结为标准的JDBC PreparedStatement setXxx()系列方法。您可以通过将JDBI源代码从绑定方法跟踪到StringArgument或类似的类来确认这一点,在这些类中,每种类型都实现了similar绑定。因此,使用JDBI bind并不比使用普通JDBC PreparedStatement和bind方法更危险。
https://stackoverflow.com/questions/41811383
复制相似问题