`
jzhua2006
  • 浏览: 304570 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Hibernate3的escape解决方法(特殊字符)

阅读更多
使用Hibernate3的原生sql查询,其实我们不需要这样做。我们还是使用Criteria条件查询。
criteria.add(Restrictions.sqlRestriction("{alias}.nickname like ? escape'/'", StringUtil.escapeSQLLike(user.getNickname()), Hibernate.STRING));
这样Hibernate产生的语句就是我们想要的语句了。
    /**
     * 转义like语句中的
     * <code>'_'</code><code>'%'</code>
     * 将<code>'?'</code>转成sql的<code>'/_'</code>
     * 将<code>'%'</code>转成sql的<code>'/%'</code>
     * <p>
     *   例如搜索<code>?aa*bb?c_d%f</code>将转化成<br/>
     *   <code>_aa%bb_c/_d/%f</code>
     * </p>
     * @param likeStr
     * @return
     * @author <a href="http://jdkcn.com">somebody</a>
     */
    public static String escapeSQLLike(String likeStr) {
        String str = StringUtils.replace(likeStr, "_", "/_");
        str = StringUtils.replace(str, "%",    "/%");
        str = StringUtils.replace(str, "?", "_");
        str = StringUtils.replace(str, "*", "%");
        return str;
    }
[转]hibernate的Restrictions

方法

说明
Restrictions.eq


Restrictions.allEq

利用Map来进行多个等于的限制
Restrictions.gt


Restrictions.ge

>=
Restrictions.lt


Restrictions.le

<=
Restrictions.between

BETWEEN
Restrictions.like

LIKE
Restrictions.in

in
Restrictions.and

and
Restrictions.or

or
Restrictions.sqlRestriction

用SQL限定查询
分享到:
评论

相关推荐

    Hibernate使用中防止SQL注入的几种方案

    在这种情况下,应确保对所有用户输入进行过滤,可以使用Spring的`StringEscapeUtils.escapeSql()`方法来转义可能的SQL特殊字符。例如: ```java String safeName = StringEscapeUtils.escapeSql(name); Query ...

    sql注入常用的解决方法

    限制允许的字符集,避免特殊字符如单引号、分号和双引号等。还可以使用正则表达式来匹配预期的输入模式。 3. **存储过程**: 使用存储过程可以限制对数据库的直接访问,只允许执行预定义的操作。存储过程内部已经...

    web测试之安全测试方法:sql注入方法

    3. **转义特殊字符**:对用户输入进行转义,例如使用PHP的mysqli_real_escape_string函数。 4. **最小权限原则**:为Web应用程序的数据库连接分配最小必要的权限,限制其对敏感数据的访问。 5. **使用ORM(对象关系...

    深度解析SQL注入十大方式保护数据安全.pdf

    3. **转义特殊字符**:对于无法使用参数化查询的场景,可以使用函数如MySQL的`mysql_real_escape_string`来转义可能的SQL特殊字符,防止它们被解释为命令。 4. **限制用户输入长度**:设定输入字段的最大长度,避免...

    SQL注入漏洞演示源代码

    4. **转义特殊字符**:虽然不是最安全的方法,但可以作为额外的安全层,例如在PHP中使用`mysql_real_escape_string`函数。 5. **错误处理**:避免暴露详细的数据库错误信息,以免提供攻击者关于数据库结构和语法的...

    sqli-labs-mod.rar

    5. **转义特殊字符**:如使用PHP的`mysqli_real_escape_string`或`htmlspecialchars`。 6. **使用ORM(对象关系映射)**:如Hibernate,它们通常能更好地处理输入验证和SQL构建。 通过"sql注入靶场"的学习,配合...

    SQL注入初探,实例

    3. **转义特殊字符**:对用户输入进行转义,例如在PHP中使用`mysqli_real_escape_string`函数,但在某些情况下,这并不能完全防止注入。 4. **最小权限原则**:确保应用连接数据库的用户账户只拥有执行所需操作的...

    sql注入攻击防范解析

    3. **转义特殊字符**:对可能的SQL控制字符进行转义,如使用PHP的`mysqli_real_escape_string`函数。 4. **最小权限原则**:数据库连接账户应具有最小必要的权限,避免高权限账户被利用。 5. **使用ORM(对象关系...

    reemaker+sybase资料

    对于防止XSS,FreeMarker提供了内置的安全函数,如`html_escape`,用于转义输出的HTML特殊字符。 6. **性能调优**:优化数据库查询,如使用索引、避免全表扫描,以及合理设计数据库架构,可以显著提升系统性能。...

    深入了解SQL注入

    - **转义特殊字符**:使用 `addslashes()` 或 `mysqli_escape_string()` 等函数来转义可能的SQL特殊字符。 - **使用预编译语句和参数绑定**:MySQLi和PDO提供预编译查询,如MySQLi的`prepare`和`bind_param`,或者...

    java 预防XSS攻击

    - 对HTML元素和属性使用HTML实体编码,例如使用`org.apache.commons.lang3.StringEscapeUtils.escapeHtml4()`。 - 对URL和JavaScript使用相应的编码,如`encodeURIComponent()`。 - 如果使用模板引擎,如...

    sql_injection_payloads.rar

    - 对用户输入进行适当的转义,如PHP的mysqli_real_escape_string,Python的sqlite3.escape_string等。 6. **学习资源**: - OWASP(开放网络应用安全项目)的SQL注入指南提供了全面的教程和最佳实践。 - SQL注入...

    白帽子讲Web安全 读书笔记一

    - 使用特殊字符截断文件路径以绕过安全检查。 - **防范措施**:对上传文件进行严格的类型检查和内容过滤,避免将上传文件放置在可公开访问的目录下。 - **认证与会话管理** - **定义**:涉及到如何验证用户身份...

    常见Web安全漏洞的实际案例和攻防技术

    3. **输入验证**:在服务器端对所有用户输入进行严格的验证和清理,避免接受任何非法字符。 #### 二、跨站脚本攻击(XSS)与防范 **实际案例** XSS攻击通常发生在Web应用程序未正确过滤用户提供的HTML或...

Global site tag (gtag.js) - Google Analytics