我正在使用knex生成我的 SQL 查询。在knex文档中,它显示了这一点
knex('users').where('columnName', 'like', '%rowlikeme%')
Run Code Online (Sandbox Code Playgroud)
现在在我的应用程序中,我这样做了:
function search(term) {
term = "%" + term + "%";
knex('table').where('description', 'like', term);
// ...
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能逃脱,%以便它也%作为术语的一部分进行搜索?
谢谢。
这是/sf/answers/3523659331/的后续问题。
它提到knex('table').where('description', 'like', '%${term}%')容易受到 sql 注入攻击。甚至评论也提到第一种情况容易发生注入攻击。然而,提供的参考文献从未提到.where容易受到注入攻击。
这是一个错误吗?为什么 knex 允许.where容易受到注入攻击而不是.whereRaw('description like \'%??%\'', [term]). 不是在这两种情况下参数都被参数化了吗?