【Web安全漏洞】- 什么是SQL注入?
小故事
● 某个公司有一个员工管理系统,里面存储员工的许多信息,每个员工只要输入自己的工号就可查询自己相关信息。张三是这个公司的一个开发人员,他突发好奇的想输入李四的工号10001是否可以成功查询,结果他失败了,因为系统有工号和身份的互相校验;于是他在工号后面加上了一个' OR 'a'='a,没想到成功返回了数据,他成功获取到了他人的许多敏感信息。
先来看个小视频,简单粗暴地认识一下SQL注入👇
带你了解SQL注入|抖音@翼安研习社
什么是SQL注入
● 由于程序员在开发数据库交互程序过程中,没有对用户输入数据进行校验、转义、限制或者处理不当,导致攻击者可以通过输入恶意字符串去非法获取数据库中的数据。
SQL注入危害
● 盗取网站的敏感信息
● 绕过验证,直接登入网站后台
● 进行权限提升等操作
SQL注入条件
● 执行数据库交互的数据可以从外部输入或者外部可控
● 这些数据并没进行严格的校验、转义、限制等处理
● 使用了不能确保安全的数据库操作方法
示例 🌰
String userName = obj.getName();
String num= request.getParameter("number");
String query = "SELECT * FROM student WHERE name= '"
+ userName + "' AND number= '"
+ num + "'";
ResultSet rs = stmt.execute(query);
👆左右滑动查看完整代码
分析:
当num的值为 1001' OR 'a'='a,此时的sql语句为:
SELECT * FROM student WHERE name= 'zhangsan' AND num = '1001' OR 'a'='a';
相当于执行以下语句:
SELECT * FROM student
👆左右滑动查看完整代码
防御方式
如何防御SQL注入
信息收集|代码审计团队
撰稿|代码审计团队
视频|代码审计团队
编辑|虞珍妮
翼安研习社
知乎|翼安研习社
抖音|翼安研习社
CSDN|翼安研习社
新浪微博|翼安研习社
球分享
球点赞
球在看