使用sqlite3和Node进行字符串插值

时间:2015-12-01 17:44:51

标签: javascript node.js express sqlite string-interpolation

对此有点新,但我在将一个变量插入到我的sqlite3查询中时遇到了问题。我收到错误{ [Error: SQLITE_ERROR: no such column: shmee] errno: 1, code: 'SQLITE_ERROR' },其中shmee就是req.body.username

不确定我在这里做错了什么?有什么指导吗?

app.post('/users/login', function (req, res) {
  console.log(req.body)
  var query = "SELECT username, password FROM users WHERE username = "+req.body.username+";"
  db.all(query, function (err, data) {
    if (err) {
      console.log(err);
    } else if (req.body.password === data.password) {
      //set cookie with user info
      req.session.user = data;
      res.redirect('/users/'+data.username);
    } else {
      console.log(data)
      console.log('password not correct');
      res.redirect('/cbt');
    }
  })
});

1 个答案:

答案 0 :(得分:1)

不要将数据连接到查询字符串中;这是安全漏洞的严重来源!

使用查询参数;无论您想将数据传递到查询的哪个位置,请放置?,并将其作为附加参数传递给run

db.run("SELECT username, password FROM users WHERE username = ?",
    username,
    function(err, data) {...});

hash your passwords