【发布时间】:2019-01-11 06:20:40
【问题描述】:
我在 Rest api 中使用 expressjs 将注册值保存到数据库中,但是我如何评估我的字段(姓名、电子邮件、密码),所以如果我在没有数据的情况下保存,则应该显示与字段相关的错误消息 这是我的代码
var mysql = require('mysql');
var con = mysql.createConnection({
host: "localhost",
user: "root",
password: "",
database: "mydb"
});
var toTime = new Date();
con.connect(function(err) {
if (err) throw err;
console.log("Connected!");
var sql = "INSERT INTO users (name, email,password) VALUES ('"+req.body.name+"','"+req.body.email+"','"+req.body.password+"')";
con.query(sql, function (err, result) {
if (err) throw err;
console.log("1 record inserted");
});
});
【问题讨论】:
-
附带说明:您对使用此类非参数化查询的 SQL 注入非常开放。
-
@JayGould:不明白你的意思,请解释一下
-
"+req.body.name+"如果有人在body.name中输入一条SQL 语句并转义您当前的语句并注入他们自己的SQL 怎么办?在此处阅读更多信息:w3schools.com/sql/sql_injection.asp -
@JayGoulud :理解你的意思,我会改变我的代码,但是有什么解决办法呢?
-
您应该在将参数发送到 SQL 服务器之前验证它们。同样如建议的那样,此验证应检查注入攻击