我是Node.js的新手,不知道如何处理sql注入? 我在Node.js中的代码如下所示:
connection.query('SELECT email FROM users WHERE firstName LIKE \'%'+firstName+'%\';', function (error, rows, fields){ someCodeHere... }
我直接从用户接收输入并将其放在查询中。我更关注sql注入吗? Node.js
进行消毒吗?如何防止Node.js中的sql注入?
编辑:
在上面提供的链接中,据说我们应该使用:
connection.escape(query);
我应该把它放在另一个变量中,或者我的代码应该如下所示:
connection.escape(query);
connection.query('SELECT email FROM users WHERE firstName LIKE \'%'+firstName+'%\';', function (error, rows, fields){ someCodeHere... }
答案 0 :(得分:3)
我建议使用执行escaping的?
占位符。
var query = 'SELECT email FROM users WHERE firstName LIKE \'%?%\';';
connection.query(query, [firstName], function (error, rows, fields){
//someCodeHere...
});
此外,您可能希望不将multipleStatements
设置为true。默认情况下它是错误的,但正如自述文件中所述,它易受SQL注入的影响。当输入被转义时是否就是这种情况,我不确定。
multipleStatements:每个查询允许多个mysql语句。小心这一点,它会让你暴露于SQL注入攻击。 (默认值:false)