Javascript knex.where容易受到sql注入攻击吗?
这是我们的后续问题 它提到Javascript knex.where容易受到sql注入攻击吗?,javascript,sql,knex.js,Javascript,Sql,Knex.js,这是我们的后续问题 它提到knex('table')。其中('description','like','%${term}%')容易受到sql注入攻击。甚至有评论也提到第一个案例容易受到注射攻击。然而,提供的参考从未提到。其中容易受到注入攻击 这是个错误吗?为什么knex允许.where容易受到注入攻击,而不允许.whereRaw('description like\'%??%\',[term])。在这两种情况下,参数不是都被参数化了吗 这是我们的后续问题 它提到knex('table')。其中(
knex('table')。其中('description','like','%${term}%')
容易受到sql注入攻击。甚至有评论也提到第一个案例容易受到注射攻击。然而,提供的参考从未提到。其中
容易受到注入攻击
这是个错误吗?为什么knex允许.where
容易受到注入攻击,而不允许.whereRaw('description like\'%??%\',[term])
。在这两种情况下,参数不是都被参数化了吗
这是我们的后续问题
它提到knex('table')。其中('description','like','%${term}%')容易受到sql注入攻击。甚至有评论也提到第一个案例容易受到注射攻击。然而,所提供的参考文献从未提到,在哪里容易发生注射攻击
我是knex的维护者,我在那里评论过
knex('table').where('description', 'like', `%${term}%`)
不易受到SQL注入攻击
这是个错误吗?为什么knex会允许.where容易受到注入攻击,但不允许.whereRaw('description like\'%??%\''[term])。在这两种情况下,参数不是都被参数化了吗
当您将值直接插入sql字符串时,.whereRaw
易受攻击(例如,标识符替换)
正确使用。在这种情况下,RAW
可以是:
.whereRaw("?? like '%' || ? || '%'", ['description', term])
所有标识符都正确引用,并且术语
作为参数绑定发送给DB
所以答案和添加到答案中的大多数评论都是完全错误的。@tadman这是一个真正的问题吗?我看了knex的
where
文档,但没有提到它易于sql注入。事实上,唯一提到的sql注入攻击是针对Raw
-。这是令人担忧的。knex的其他哪些功能容易受到sql注入攻击?这里是knex的维护。你好我只想在这里提到,这个问题的前提都是false
,请忽略@tadman的评论。在这种情况下,甚至不应该使用??绑定。tl;假博士news@MikaelLepist谢谢你的澄清。