使用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限定查询
分享到:
相关推荐
在这种情况下,应确保对所有用户输入进行过滤,可以使用Spring的`StringEscapeUtils.escapeSql()`方法来转义可能的SQL特殊字符。例如: ```java String safeName = StringEscapeUtils.escapeSql(name); Query ...
限制允许的字符集,避免特殊字符如单引号、分号和双引号等。还可以使用正则表达式来匹配预期的输入模式。 3. **存储过程**: 使用存储过程可以限制对数据库的直接访问,只允许执行预定义的操作。存储过程内部已经...
3. **转义特殊字符**:对用户输入进行转义,例如使用PHP的mysqli_real_escape_string函数。 4. **最小权限原则**:为Web应用程序的数据库连接分配最小必要的权限,限制其对敏感数据的访问。 5. **使用ORM(对象关系...
3. **转义特殊字符**:对于无法使用参数化查询的场景,可以使用函数如MySQL的`mysql_real_escape_string`来转义可能的SQL特殊字符,防止它们被解释为命令。 4. **限制用户输入长度**:设定输入字段的最大长度,避免...
4. **转义特殊字符**:虽然不是最安全的方法,但可以作为额外的安全层,例如在PHP中使用`mysql_real_escape_string`函数。 5. **错误处理**:避免暴露详细的数据库错误信息,以免提供攻击者关于数据库结构和语法的...
5. **转义特殊字符**:如使用PHP的`mysqli_real_escape_string`或`htmlspecialchars`。 6. **使用ORM(对象关系映射)**:如Hibernate,它们通常能更好地处理输入验证和SQL构建。 通过"sql注入靶场"的学习,配合...
3. **转义特殊字符**:对用户输入进行转义,例如在PHP中使用`mysqli_real_escape_string`函数,但在某些情况下,这并不能完全防止注入。 4. **最小权限原则**:确保应用连接数据库的用户账户只拥有执行所需操作的...
3. **转义特殊字符**:对可能的SQL控制字符进行转义,如使用PHP的`mysqli_real_escape_string`函数。 4. **最小权限原则**:数据库连接账户应具有最小必要的权限,避免高权限账户被利用。 5. **使用ORM(对象关系...
对于防止XSS,FreeMarker提供了内置的安全函数,如`html_escape`,用于转义输出的HTML特殊字符。 6. **性能调优**:优化数据库查询,如使用索引、避免全表扫描,以及合理设计数据库架构,可以显著提升系统性能。...
- **转义特殊字符**:使用 `addslashes()` 或 `mysqli_escape_string()` 等函数来转义可能的SQL特殊字符。 - **使用预编译语句和参数绑定**:MySQLi和PDO提供预编译查询,如MySQLi的`prepare`和`bind_param`,或者...
- 对HTML元素和属性使用HTML实体编码,例如使用`org.apache.commons.lang3.StringEscapeUtils.escapeHtml4()`。 - 对URL和JavaScript使用相应的编码,如`encodeURIComponent()`。 - 如果使用模板引擎,如...
- 对用户输入进行适当的转义,如PHP的mysqli_real_escape_string,Python的sqlite3.escape_string等。 6. **学习资源**: - OWASP(开放网络应用安全项目)的SQL注入指南提供了全面的教程和最佳实践。 - SQL注入...
- 使用特殊字符截断文件路径以绕过安全检查。 - **防范措施**:对上传文件进行严格的类型检查和内容过滤,避免将上传文件放置在可公开访问的目录下。 - **认证与会话管理** - **定义**:涉及到如何验证用户身份...
3. **输入验证**:在服务器端对所有用户输入进行严格的验证和清理,避免接受任何非法字符。 #### 二、跨站脚本攻击(XSS)与防范 **实际案例** XSS攻击通常发生在Web应用程序未正确过滤用户提供的HTML或...