什么是sql注入

﹥>﹥吖頭↗ 提交于 2020-01-04 09:45:58

因为用户在客户端填写的信息我们无法控制,所以可能出现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));

本来只是一个插入的操作,但是因为用户的填写信息的拼接缘故造成了,数据库数据的删除,来实现不可告人的密码,当然这也只是一个极端的例子

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!