民间,
我正在hibernate 3中构建一个标准,如下所示。这是sql注入证明吗?
criteria
.add(
Restrictions.sqlRestriction(
"to_char(createDate,'mm/dd/yyyy') like '%" + dateString + "%'"),
StandardBasicTypes.STRING);
我想的另一个选择是将dateString转换为日期并转换为
criteria.add(Restrictions.eq(createDate, dateObjCreatedFromString)
答案 0 :(得分:3)
不,这不是SQL注入证明,因为您使用普通的字符串操作来构建限制。以下是如何正确执行此操作(假设您必须使用sqlRestriction来解决此问题):
criteria
.add(
Restrictions.sqlRestriction(
"to_char(createDate,'mm/dd/yyyy') like ?",
"%" + dateString + "%", StandardBasicTypes.STRING));
答案 1 :(得分:0)
我会将日期字符串解析为java日期。它还具有您可以更好地控制支持的日期格式的优势。
当客户端转换字符串时会更好。客户端可以更好地处理格式错误的输入字符串。