【发布时间】:2020-01-31 22:16:40
【问题描述】:
我有一个可以有不同 where 子句的 sql 查询。我想将此子句动态插入到普通 sql 中:
val v1 = s"id = $id AND secondId IS NULL"
val v2 = s"secondId = $secondId"
val whereCondition = //v1 or v2 at runtime
val query = sql"select id from users where #$whereCondition"
如您所见,在 sql 注入的情况下是不安全的。有更安全的方法来构建这个 sql 吗?
【问题讨论】:
-
如果可以的话,我建议不要在这里使用plain-sql,而是动态构建查询
-
我同意这一点。使用 slick 的类型安全查询而不是普通的 sql 查询。阅读:Slick type-safe, composable queries。这样 Slick 将处理 SQL 注入漏洞。