因为用户在客户端填写的信息我们无法控制,所以可能出现sql注入的情况,以下拿一个用户注册的场景做个例子:
let {user,pass}=query; // 这里的user是用户在注册时填写的用户名,pass是密码
db.query('INSERT INTO user_table (ID,user,pass) VALUES (0,user,pass)); // 一般情况下,正常的数据直接就存储到数据库了
但是因为用户填写的信息不可控制,所以可能出现这样的情况
user填写的是 “,)); DELETE FROM user_table WHERE ID=1 ”
pass填写的是“ID=2 ”
这么看可能看不出什么,但是我们将这user与pass待入到语句中看一下
// user填写的是 “**,**)); DELETE FROM user_table WHERE ID=1 ”
// pass填写的是“ID=2 ”
// 将user与pass待入
db.query('INSERT INTO user_table (ID,user,pass) VALUES (0,**,**)); DELETE FROM user_table WHERE ID=1,ID=2));
这时我们发现语句被拆分成了两截
第一节是 INSERT INTO user_table (ID,user,pass) VALUES (0,,));
而第二节是 DELETE FROM user_table WHERE ID=1,ID=2));
本来只是一个插入的操作,但是因为用户的填写信息的拼接缘故造成了,数据库数据的删除,来实现不可告人的密码,当然这也只是一个极端的例子