Node-MySQL – Query()方法中的转义与Mysql.Escape()/ Mysql.EscapeId()
我目前正在使用node-mysql库将我的应用程序连接到一个MySQL实例。 在阅读了我发现的其他一些StackOverflow问题和文章之后,听起来就像每次调用query()
方法时,node-mysql都会自动转义不安全的字符。 但是在一些代码片段中,我还看到在query()
方法中调用了mysql.escape()
和mysql.escapeId()
。
这似乎是,虽然query()
自动转义一些危险的字符,你仍然应该调用mysql.escape()
和mysql.escapeId()
转义其他危险字符。
它是否正确? 如果是这样,什么样的SQL注入攻击被query()
方法自动保护,通过调用mysql.escape()
和mysql.escapeId()
来保护什么样的SQL注入攻击?
不, 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) { // ... });