make criteria.add(Restrictions.sqlRestriction())sql注入证明

时间:2015-05-28 20:39:55

标签: sql hibernate

民间,

我正在hibernate 3中构建一个标准,如下所示。这是sql注入证明吗?

criteria
    .add(
         Restrictions.sqlRestriction(
            "to_char(createDate,'mm/dd/yyyy') like '%" + dateString + "%'"),
         StandardBasicTypes.STRING);

我想的另一个选择是将dateString转换为日期并转换为

criteria.add(Restrictions.eq(createDate, dateObjCreatedFromString)

2 个答案:

答案 0 :(得分:3)

不,这不是SQL注入证明,因为您使用普通的字符串操作来构建限制。以下是如何正确执行此操作(假设您必须使用sqlRestriction来解决此问题):

criteria
    .add(
         Restrictions.sqlRestriction(
            "to_char(createDate,'mm/dd/yyyy') like ?", 
            "%" + dateString + "%", StandardBasicTypes.STRING));

答案 1 :(得分:0)

我会将日期字符串解析为java日期。它还具有您可以更好地控制支持的日期格式的优势。

当客户端转换字符串时会更好。客户端可以更好地处理格式错误的输入字符串。