我有一个来自请求的搜索参数,它是一个像“abc”这样的字符串。现在我想构建一个sqls并在sqls中使用这个变量引用。我尝试了下面的方法:
val searchValue = "abc"
sqls"column_name ILIKE '%$searchValue%'"
但这不起作用。然后我尝试了以下不安全的方法。
val searchValueSqls = SQLSyntax.createUnsafely(searchValue)
sqls"column_name ILIKE '%$searchValueSqls%'"
这很好但是文档说“注意SQL注入漏洞。”
是否有任何安全方法可以在sqls中实现变量引用?
另一种方法是我们可以使用 sqls.like 来构建类似的操作。
但 是否对sqls.like不区分大小写? 由于 ILIKE 对redshift不区分大小写。
答案 0 :(得分:0)
我们可以使用 LikeConditionEscapeUtil 。
val escapedValue = SQLSyntax.createUnsafely(LikeConditionEscapeUtil.escape(searchValue))
sqls"column_name ILIKE '$escapedValue'"