【发布时间】:2017-05-16 16:23:29
【问题描述】:
当用户输入表单时,需要检查 mysql 中是否存在电子邮件。 从表单 requser.email 将在表单中输入用户的电子邮件。如何将 requser.email 与数据库进行比较以找到匹配项。
router.post('/signup', function(req, res, next) {
var requser = req.body.data.user;
var hash = bcrypt.hashSync(req.body.data.user.password)
var str = "";
/*email check start*/
/*email check end*/
switch (requser.role) {
case "approver":
str = 'INSERT INTO users (name, email, password,role) values("' + requser.name + '","' + requser.email + '","' + hash + '","approver")';
break;
case "user":
str = 'INSERT INTO users (name, email, password,role) values("' + requser.name + '","' + requser.email + '","' + hash + '","user")';
break;
case "admin":
str = 'INSERT INTO users (name, email, password,role) values("' + requser.name + '","' + requser.email + '","' + hash + '","admin")';
break;
}
if (!str) {
return res.json({
"status": "error",
"data": {
"redirect": "/"
}
});
}
connection.query(str, function(error, rows) {
if (error) {
console.log("error ocurred", error);
}
//console.log(rows);
res.json({
"status": error ? "error" : "success",
"data": rows || ""
})
});
});
【问题讨论】:
-
你有一个 SQL 注入漏洞。
-
警告:为避免SQL injection bugs 始终使用placeholder values 转义查询中的any 任意数据。此登录系统允许任何人对您的网站和数据进行任何操作。