2017-07-02 54 views
0

我有一個來自請求的搜索參數,它是一個類似「abc」的字符串。現在我想要構建一個sqls並在sqls中使用這個變量引用。我嘗試以下方法:在ScalalikeJdbc中構建SQL查詢時SQLSyntax中的變量引用

val searchValue = "abc"  

sqls"column_name ILIKE '%$searchValue%'" 

但這並沒有工作。然後我嘗試了以下不安全的方法。

val searchValueSqls = SQLSyntax.createUnsafely(searchValue) 

sqls"column_name ILIKE '%$searchValueSqls%'" 

這工作得很好,但文件說「要知道SQL注入漏洞的。」

是否有任何安全的方法來實現sqls內的變量引用?

另一種方法是,我們可以使用sqls.like建立同樣的操作。

是sqls.like字符串不區分大小寫? As ILIKE對紅移不區分大小寫。

+0

maybe'sqls「column_name ILIKE'%$ {searchValue}%'」'? – mfirry

+0

所有工作正常https://scastie.scala-lang.org/optician/VLzFbqQwQxaCGAfWqiIu7w Plz,指定版本和錯誤。 – Zernike

回答

0

我們可以使用LikeConditionEscapeUtil

val escapedValue = SQLSyntax.createUnsafely(LikeConditionEscapeUtil.escape(searchValue)) 
sqls"column_name ILIKE '$escapedValue'"