Sqlite如何转义值以防止SQL注入

时间:2016-11-04 09:02:09

标签: node.js sqlite sql-injection

有人能告诉我如何转义输入值以防止SQL注入?我有一个用户身份验证应用程序,我需要以某种方式导入一些安全性。

我的验证如下:

//Validation 
req.checkBody('name', 'Name is required').notEmpty();
req.checkBody('email', 'Email is required').notEmpty();
req.checkBody('email', 'Email is not valid').isEmail();
req.checkBody('password', 'Password is required').notEmpty();
req.checkBody('password', 'Password must have at least 6 characters').len(6,20);
req.checkBody('password2', 'Passwords do not match').equals(req.body.password);

然后我INSERT一些值如下:

var stmt = db.prepare("INSERT INTO users ( id, name, email, password, salt) VALUES (NULL, ?, ?, ?, ?)");
               stmt.run([ name, hashEmail(email,'salt'), hashPassword(password,'salt'), 'salt'], function(error){  //.....

我被告知这不是真正安全的导入价值的方式,但只要我没有真正的互联网安全经验,我就需要你的帮助。

此致

1 个答案:

答案 0 :(得分:4)

由于您已经正确使用参数化查询(而不是构造与请求参数混合的SQL字符串,因此在查询中使用?来指定在执行SQL语句时将替换参数的位置) ,上面显示的代码已经很好了,不容易受到SQL注入

如果将这些变量与SQL字符串本身连接起来,它只会受到SQLi的攻击。<​​/ p>