【发布时间】:2015-03-05 10:39:17
【问题描述】:
我有一个使用 Ebean Finder 对象的查询。这是一个工作版本:
public static Finder<Long, Device> find = new Finder<>(Long.class, Device.class);
.
public static Page<Device> find(int page, String sorting, String order) {
return
find.where()
.orderBy(sorting + " " + order)
.findPagingList(10)
.setFetchAhead(false)
.getPage(page);
}
但现在我想通过使用 setParameter 函数使其 SQLInjection 安全,我尝试了这个,但没有奏效。很高兴知道我做错了什么。
public static Page<Device> find(int page, String sorting, String order) {
return
find.where()
.orderBy(":sorting :order")
.setParameter("sorting", sorting)
.setParameter("order", order)
.findPagingList(10)
.setFetchAhead(false)
.getPage(page);
}
更新:
如提到的here,
“问题是您不能使用命名参数在 HQL(或 SQL)查询中设置 ORDER。”
如果为真,这会使我的代码容易受到 SQL 注入的攻击!那你有什么建议?
【问题讨论】:
标签: java playframework ebean