什么是sql注入

本文通过一个用户注册场景的实例,详细解析了SQL注入攻击的原理。当用户输入的数据未经过滤直接拼接到SQL语句中时,恶意用户可通过特殊字符绕过安全验证,导致数据泄露或破坏。文章强调了对用户输入进行严格校验的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值