【发布时间】:2023-03-16 18:00:01
【问题描述】:
我需要实现一个用户可以输入 * 作为通配符的搜索。他们正在搜索的数据库是 SQL 服务器。我正在考虑将 * 替换为 %:
userInput = userInput.replace('*', '%');
我担心由于我是“手动”执行此操作,因此可能会引入一些错误或安全漏洞。你看到这样做有什么问题吗?有没有图书馆可以帮我做这个?
我使用 Hibernate 作为 ORM 映射器和 Criteria API 来创建查询(如果它有助于回答)。
【问题讨论】:
-
如果您使用
like,您还想转义现有的%、_和[...]。这可能与以下内容重复:Escape a string in SQL Server so that it is safe to use in LIKE expression -
但只要您使用的是 PreparedStatement,就不会引发任何安全漏洞。
-
@Kobi 谢谢,我不知道 _ 和 []。必须尝试这些如何影响查询。 Hibernate 允许我设置一个转义字符,所以我可能会更新这个问题,尝试转义我不希望用户使用的东西。