JDBIクエリを動的にフィルタリングする必要があります。JDBI SQLインジェクションを防止しながらWHERE句を動的に作成する方法はありますか?
パラメータのリストは、UIからREST経由で渡されます。
WHERE foo=bar AND baz=taz
そして、このようになりますどのJDBIに渡さ:
@UseStringTemplate3StatementLocator
public interface ThingDAO {
@SqlQuery("SELECT * FROM things <where>)
List<Thing> findThingsWhere(@Define("where") String where);
}
次のようなものへ - (不器用)構築された(> StringBuilderのジャージー@Context UriInfo :: getQueryParameters)である
http://localhost/things?foo=bar&baz=taz
http://localhost/things?foo=buz
私の知る限り、現在の実装はSQLインジェクションに対して脆弱です。 明らかにカラム名はサニタイズできますが、値はサニタイズできません。 1
これを行うには、より洗練されたSQLインジェクションの証明方法が必要です。
私はそうではないと思います。彼は 'Long'型のパラメータのリストを持っています(注入ウィザードには使用できないはずです))' @BindIn'はPreparedStatements 「@ Define」(私が理解する限り)はそうではありません。 – unSinn