Node-MySQL - 在Query()方法中与Esql.Escape()/ Mysql.EscapeId()中的转义

Llo*_*nks 5 node.js express node-mysql

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

似乎在query()自动逃避一些危险角色的同时,你仍然应该打电话mysql.escape()并mysql.escapeId()逃避其他危险角色.

它是否正确?如果是这样,那么该query()方法会自动保护哪种SQL注入攻击,mysql.escape()以及通过调用和mysql.escapeId()?保护哪种SQL注入攻击?

go-*_*leg 12

不,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) {
  // ...
});
Run Code Online (Sandbox Code Playgroud)

  • 我知道已经晚了但是,是的。使用占位符会自动转义字符串。在内部它仍然使用 escape 顺便说一句 (8认同)
  • 那么如果您使用占位符,字符串会自动转义? (4认同)