Sqlite 如何转义值以防止 SQL 注入
Sqlite how to escape values to prevent 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){ //.....
有人告诉我这不是真正安全的导入值的方法,但只要我在互联网安全方面没有真正的经验,我就需要你的帮助。
此致
因为您已经在正确使用参数化查询(而不是构建一个与请求参数混合的 SQL 字符串,您在查询中使用 ?
来指定参数将被替换的位置SQL 语句被执行),你上面显示的代码已经很好并且不容易受到 SQL 注入 .
如果您将这些变量与 SQL 字符串本身连接起来,它只会受到 SQLi 的攻击。
谁能告诉我如何转义输入值以防止 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){ //.....
有人告诉我这不是真正安全的导入值的方法,但只要我在互联网安全方面没有真正的经验,我就需要你的帮助。
此致
因为您已经在正确使用参数化查询(而不是构建一个与请求参数混合的 SQL 字符串,您在查询中使用 ?
来指定参数将被替换的位置SQL 语句被执行),你上面显示的代码已经很好并且不容易受到 SQL 注入 .
如果您将这些变量与 SQL 字符串本身连接起来,它只会受到 SQLi 的攻击。