提问人:Talal Anwer 提问时间:2/25/2022 最后编辑:Talal Anwer 更新时间:2/28/2022 访问量:1001
mysql 插入集合?语法
Mysql INSERT INTO SET ? syntax
问:
await query(`INSERT INTO feedback.app_v2 SET ?`, feedback)
我写了这一行来代码到我的 JS 项目中,以在相关表中插入数据。
我想问一下这个MySql语法是否对Sql注入是安全的? 此处,反馈是一个对象,其键与app_v2表列匹配。
答:
0赞
Bill Karwin
2/25/2022
#1
这不是有效的MySQL语法。
这是有效的MySQL语法:
INSERT INTO feedback.app_v2 SET mycolumn = ?
是的,它不受 SQL 注入的影响,因为动态值仅限于查询参数。在分析查询之前,这不会与查询合并,因此参数无法引入意外语法。
如果 NPM 包可以执行字符串替换以将语法放入查询字符串中,则这不是真正的查询参数。在分析查询之前,赋值必须是查询的一部分,但在分析查询之前,正确的查询参数不会与查询组合。key = 'value'
因此,您依赖于 NPM 包中的代码来执行字符串替换,而不会出现任何导致 SQL 注入漏洞的错误。
评论
0赞
Talal Anwer
2/25/2022
我想我没有提供足够的信息,但这是mysql npm包的有效语法。在执行查询之前,它会自动将对象键转换为键 = 'value' 语法。
评论