2017-07-02 3 views
0

私は、 "abc"のような文字列であるrequestからの検索パラメータを持っています。今私は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内で達成するための安全なアプローチはありますか?

もう1つの方法は、sqls.likeを使用して同様の操作を行うことです。

ただし、は大文字と小文字を区別しませんか?ILIKEは、赤方偏移に対して大文字と小文字を区別しません。

+0

多分 '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'" 
関連する問題