mysql转义字符串节点js`

时间:2018-11-16 21:52:17

标签: mysql node.js sql-injection

所以我正在使用节点js,我使用npm mysql库处理以下mysql查询消息。

let userName = req.body.userName;   
let sqlStatement = `SELECT COUNT(*) AS exist FROM user where username=${userName}`;

是新的es6语法自动阻止mysql注入。 因为当我这样做

let userName = req.body.userName;   
userName = connection.escape(userName);
let sqlStatement = `SELECT COUNT(*) AS exist FROM user where username=${userName}`;

它将单引号放在数据库中的数据周围,例如“ myUserName”。有人知道为什么是这样吗?或新语法是否会自动阻止它。

1 个答案:

答案 0 :(得分:0)

使用[]语法转义数据

result = await database.query(
        "INSERT INTO user SET ?",
        [req.body],
        function(error, result) {
          if (!error) {
            console.log("worked");
          } else {
            console.log(error);
          }
        }
      );