我目前正在使用node-mysql库将我的应用程序连接到一个MySQL实例。在阅读了我发现的其他一些StackOverflow问题和文章后,它听起来像是node-mysql在每次调用query()方法时自动转义不安全的字符。但是在一些代码片段中,我还看到在query()方法中调用了mysql.escape()和mysql.escapeId()。
似乎当query()自动转义一些危险字符时,您仍然应该调用mysql.escape()和mysql.escapeId()来转义其他危险字符。
这是正确的吗?如果是,query()方法会自动保护哪种类型的SQL注入攻击,以及通过调用mysql.escape()和mysql.escapeId()来保护哪种类型的SQL注入攻击
发布于 2014-08-05 11:42:08
不,query()不会自动转义不安全字符。
要安全转义值,您需要使用mysql.escape()/mysql.escapeId()或使用?占位符,如下所述:
https://github.com/felixge/node-mysql#escaping-query-values
connection.query('SELECT * FROM users WHERE id = ?', [userId], function(err, results) {
// ...
});发布于 2021-04-28 07:11:07
这就是如何转义INSERT VALUES(),因为所有的示例都是用?对于SET方法,对于用逗号分隔的转义值(Data,Data),可以使用模板字符串。也可以在数据为空时转义命令,将其替换为NULL
(`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})https://stackoverflow.com/questions/25128055
复制相似问题