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