【Web安全】- 什么是SQL注入?

  • 作者|代码审计团队
  • 来源|翼安研习社
  • 发布时间|2021-04-08


0. 前言:小故事

  • 某个公司有一个员工管理系统,里面存储员工的许多信息,每个员工只要输入自己的工号就可查询自己相关信息。张三是这个公司的一个开发人员,他突发好奇的想输入李四的工号10001是否可以成功查询,结果他失败了,因为系统有工号和身份的互相校验;于是他在工号后面加上了一个
    ' OR 'a'='a,没想到成功返回了数据,他成功获取到了他人的许多敏感信息。

点击链接:先来看个小视频,简单粗暴地认识一下SQL注入👇

传送门

(😘欢迎关注我们的同名抖音账号@翼安研习社)


1. 什么是SQL注入

由于程序员在开发数据库交互程序过程中,没有对用户输入数据进行校验、转义、限制或者处理不当,导致攻击者可以通过输入恶意字符串去非法获取数据库中的数据。


2. SQL注入危害

  • 盗取网站的敏感信息

  • 绕过验证,直接登入网站后台

  • 进行权限提升等操作


3. 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

4. 防御方式

在这里插入图片描述

图1

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值