有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    您的两个示例都在内部使用JDBI参数绑定机制,最终归结为标准的JDBC PreparedStatementsetXxx()方法系列。 您可以通过跟踪JDBI源代码,从bind方法到StringArgument或类似的类来确认这一点,在这些类中,每种类型都实现了SQL查询参数绑定。 因此,使用JDBIbind并不比使用普通的JDBCPreparedStatementsetString/setInt/setXxx方法更危险