1.概念:

  • 利用sql语句的漏洞来对系统进行攻击,导致数据泄露

2.案例演示

数据库登录表:

模拟登录代码【输入正确的用户名和密码才能打印出用户信息】

public class SQL注入 {public static void main(String[] args) {login(  " 'or '1=1",  "123456'or '1=1");//login("张三","123456");//select * from login where name=' 'or '1=1' AND password ='123456'or '1=1'}//登录业务public static void login(String username,String password){Connection conn =null;Statement stmt =null;ResultSet rs =null;try {conn = JdbcUtils.getConnection();stmt = conn.createStatement();String sql = "select * from login where name='"+username+"' AND password ='"+password+"'";//System.out.println(sql);rs = stmt.executeQuery(sql);while (rs.next()){System.out.println(rs.getString("Name"));System.out.println(rs.getString("password"));}} catch (SQLException e) {e.printStackTrace();}finally {JdbcUtils.close(conn,stmt,rs);}}
}
-----------------------------------------------------------------------------------
login("张三","123456");展示结果:
张三
123456和login(  " 'or '1=1",  "123456'or '1=1");展示结果:
张三
123456
李四
654321

3.SQL注入漏洞的原因

  • 使用Statement对象执行SQL时,如果SQL中拼接的变量包含了SQL关键字,那么就会出现SQL注入漏洞
  • 如;上面的登录案例 login( " 'or ‘1=1", “123456’or '1=1”);传入的参数进行后台的sql拼接时就会变成select * from login where name=’ 'or ‘1=1’ AND password ='123456’or ‘1=1’,则导致输入不正确的参数,所有信息都被打印出来

4.SQL注入漏洞的解决办法

  • 使用PreparedStatement对象代替Statement对象执行SQL,该对象可以预编译SQL语句,固定SQL的格式和关键字,用?占位符表示传递的数据,后期设置数据即可
    【PreparedStatement为Statement的子类】

  • PreparedStatement的使用
    【第一步】:使用Connection对象获取PreparedStatement对象预编译sql
    【第二步】:如果SQL中有几个?占位符,那么就设置几个参数。
    【第三步】:调用executeQuery()或者executeUpdate()方法执行SQL,但是不用再传递SQL。

//3 创建执行SQL的对象
pstmt = connection.prepareStatement("insert into student values(null,?,?,?)");
//有几个?就设置几个参数
pstmt.setString(1,stu.getName());
pstmt.setInt(2,stu.getAge());
pstmt.setString(3,stu.getBirthday());
//4 执行SQL得到结果
count= pstmt.executeUpdate();

JDBC的SQL注入漏洞相关推荐

  1. JDBC的SQL注入漏洞分析和解决

    SQL注入漏洞分析 SQL注入漏洞解决 需要采用PreparedStatement对象解决SQL注入漏洞.这个对象将SQL预先进行编译,使用?作为占位符.?所代表内容是SQL所固定.再次传入变量(包含 ...

  2. 预处理prepareStatement是怎么防止sql注入漏洞的?

    序,目前在对数据库进行操作之前,使用prepareStatement预编译,然后再根据通配符进行数据填值,是比较常见的做法,好处是提高执行效率,而且保证排除SQL注入漏洞. 一.prepareStat ...

  3. 浅析Java代码审计中的SQL注入漏洞

    浅析Java代码审计中的SQL注入漏洞 1.注入漏洞简介 2.SQL注入漏洞简介 3.JDBC拼接不当造成SQL注入 第一关:使用Statement 第二关:使用PrepareStatement 4. ...

  4. SQL 注入漏洞详解

    [渗透测试实用手册]SQL注入漏洞 漏洞名称 SQL注入漏洞 漏洞地址 漏洞等级 高危 漏洞描述 SQL 注入漏洞是指攻击者通过把恶意的 SQL 语句插入到网站的输入参数中,来绕过网站的安全措施,获取 ...

  5. 易想团购 注入 user.php,易想团购系统通杀SQL注入漏洞分析及利用漏洞预警 -电脑资料...

    刚打开红黑看到J8基友写的一个{易想团购系统 最新版 通杀}的文章,看他贴的代码里面有个get_client_ip()函数,哈哈,我猜没过滤,果断下了一套程序, 找到get_client_ip()函数 ...

  6. SQL注入漏洞的检测与防范技术

    提 要   本文从SQL注入的基本概念和注入原理入手,分析总结了SQL注入漏洞的检测及其防范技术措施. 关键词  SQL注入漏洞 检测 防范技术 引 言    近几年来随着计算机网络和WEB技术的飞速 ...

  7. Apache 'mod_accounting'模块SQL注入漏洞(CVE-2013-5697)

    漏洞版本: mod_accounting 0.5 漏洞描述: BUGTRAQ ID: 62677 CVE ID: CVE-2013-5697mod_accounting是Apache 1.3.x上的流 ...

  8. guestbook.php注入,TinyGuestBook 'sign.php'多个SQL注入漏洞

    发布日期:2012-09-23 更新日期:2012-10-04 受影响系统: TinyGuestBook TinyGuestBook 描述: ----------------------------- ...

  9. thinkphp日志泄漏漏洞_ThinkPHP框架通杀所有版本的一个SQL注入漏洞详细分析及测试方法...

    ThinkPHP 3.1.3及之前的版本存在一个SQL注入漏洞,漏洞存在于ThinkPHP/Lib/Core/Model.class.php 文件 根据官方文档对"防止SQL注入" ...

最新文章

  1. Django 上传图片和Admin站点5.2
  2. Dialog 带白色的边的处理方法
  3. html5调用系统声音1s响一次_HTML5声音录制/播放功能的实现代码
  4. java windows wrapper_Java Service Wrapper 使用(windows)
  5. asp.net 页面中点击按钮后无反应的解决方法
  6. NYOJ542-试制品
  7. 使用Spring整合Quartz轻松完成定时任务
  8. ACL 2021 | 基于依存句法驱动注意力图卷积神经网络的关系抽取
  9. mysql与Pdo_PDO和MySQLi区别与选择?
  10. ORACLE数据库触发器
  11. sqlserver查看被锁表、解锁
  12. 一只青蛙跳向三个台阶_在藏区流传的青蛙王子的故事
  13. CSS和HTML的基础知识(一)——HTML常用标签的简介及用法
  14. 算法:First Missing Positive(求缺失的第一个正整数)
  15. lg手机历史机型_lg手机大全【详细介绍】
  16. java基于Springboot+vue的鲜花销售商城网站
  17. CGAL学习记录——点云密度计算
  18. Python3图片中竖排文字
  19. 移动优先和桌面优先的状态
  20. 嵌入式Linux小项目之图片编解码播放器(5)

热门文章

  1. [APIO2018] New Home 新家(线段树,二分答案,离散化)
  2. Codeforces 1065 E. Side Transmutations
  3. 2020CCPC威海
  4. CF788789(div1div2)
  5. YBTOJ:魔法数字(数位dp)
  6. P7408-[JOI 2021 Final]ダンジョン 3【贪心,树状数组】
  7. P2900-[USACO08MAR]Land AcquisitionG【斜率优化】
  8. P1311,jzoj3025-选择客栈【统计】
  9. 2018/7/12-纪中某C组题【jzoj4272,jzoj4273,jzoj4274】
  10. 【树链剖分】LCA(P4211)