我正在使用MySql数据库,并试图找到一个替代tedious.js(一个SQL服务器参数化查询生成器)的MySQL替代品.我正在使用Node.js作为我的后端.
我读到knex.js中的.raw()命令很容易被sql注入,如果没有用于绑定.但其他命令和knex.js作为一个整体安全使用,以防止SQL注入?还是我在错误的树上吠叫?
这是/sf/answers/3523659331/的后续问题。
它提到knex('table').where('description', 'like', '%${term}%')容易受到 sql 注入攻击。甚至评论也提到第一种情况容易发生注入攻击。然而,提供的参考文献从未提到.where容易受到注入攻击。
这是一个错误吗?为什么 knex 允许.where容易受到注入攻击而不是.whereRaw('description like \'%??%\'', [term]). 不是在这两种情况下参数都被参数化了吗?