首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询()方法中的Node-MySQL转义与Mysql.Escape() / Mysql.EscapeId()

查询()方法中的Node-MySQL转义与Mysql.Escape() / Mysql.EscapeId()
EN

Stack Overflow用户
提问于 2014-08-05 05:41:54
回答 2查看 26K关注 0票数 9

我目前正在使用node-mysql库将我的应用程序连接到一个MySQL实例。在阅读了我发现的其他一些StackOverflow问题和文章后,它听起来像是node-mysql在每次调用query()方法时自动转义不安全的字符。但是在一些代码片段中,我还看到在query()方法中调用了mysql.escape()mysql.escapeId()

似乎当query()自动转义一些危险字符时,您仍然应该调用mysql.escape()mysql.escapeId()来转义其他危险字符。

这是正确的吗?如果是,query()方法会自动保护哪种类型的SQL注入攻击,以及通过调用mysql.escape()mysql.escapeId()来保护哪种类型的SQL注入攻击

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-05 11:42:08

不,query()不会自动转义不安全字符。

要安全转义值,您需要使用mysql.escape()/mysql.escapeId()或使用?占位符,如下所述:

https://github.com/felixge/node-mysql#escaping-query-values

代码语言:javascript
复制
connection.query('SELECT * FROM users WHERE id = ?', [userId], function(err, results) {
  // ...
});
票数 27
EN

Stack Overflow用户

发布于 2021-04-28 07:11:07

这就是如何转义INSERT VALUES(),因为所有的示例都是用?对于SET方法,对于用逗号分隔的转义值(Data,Data),可以使用模板字符串。也可以在数据为空时转义命令,将其替换为NULL

代码语言:javascript
复制
(`INSERT INTO data VALUES (NULL,${c.escape(data.Name)},${c.escape(data.age)},${c.escape(data.emptystring)})`,
//INSERT INTO data VALUES (NULL,'Adam',24,NULL})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25128055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档