现在通过mysql以及oracle来测试sql注入  漏洞

mysql中的注释#    oracle中的注释为--

所以注入漏洞就产生了

    //登录测试
public void login()throws Exception{
Scanner input=new Scanner(System.in);
System.out.println("登录名:");
String loginname=input.nextLine();
System.out.println("密码:");
String password=input.nextLine(); getConn();
/*
String sql="select *from student where name=? and password=?";
PreparedStatement ps=(PreparedStatement) conn.prepareStatement(sql);
ps.setObject(1,loginname);
ps.setObject(2,password);
System.out.println(sql);
ResultSet rs=ps.executeQuery();
*/ // * sql注入漏洞
String sql="select *from student where name='"+loginname+"' and password='"+password+"'";
System.out.println(sql);
Statement s=(Statement) conn.createStatement();
ResultSet rs=s.executeQuery(sql);
System.out.println(sql); boolean flag=false;
if(rs.next()){
flag=true;//如果进入到循环 说明有数据 则登录成功
}
if(flag){
System.out.println("登录成功");
}else{
System.out.println("登录失败");
}
rs.close();
closeConn();
}

就以上代码 ,执行main方法,调用该login()方法 进行验证登录

数据库

第一次 :输入正确的值  进行登录

结果很合理

第二次:输入错误的账号和密码

结果很合理  登录失败  因为数据库中查询不到该信息

第三次:利用注入漏洞登录

怎么回事  随便输入的内容  竟然登录成功

原因 :mysql中使用#作为了注释  所以 拼接的sql语句就发生了变化

红色和粉色的框子中 是查询条件  是永远成立的  #作为注释  那么它之后随便输入任何内容都相当于没写   所以这就是利用注释  然后出现的查询漏洞

mysql注入漏洞语句:' or 1=1 #   所以oracle的注入漏洞语句就是:' or 1=1 --(他们中的恒等式x=x是永远成立的)

所以我们就需要使用PreparedStatement对象  他就是statement对象的增强版

Statement对象sql注入漏洞的问题的更多相关文章

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

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

  2. jdbc mysql crud dao模型 sql注入漏洞 jdbc 操作大文件

    day17总结 今日内容 l JDBC 1.1 上次课内容总结 SQL语句: 1.外键约束:foreign key * 维护多个表关系! * 用来保证数据完整性! 2.三种关系: * 一对多: * 一 ...

  3. 利用SQL注入漏洞登录后台

    所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询 ...

  4. 使用参数化查询防止SQL注入漏洞(转)

    SQL注入的原理 以往在Web应用程序访问数据库时一般是采取拼接字符串的形式,比如登录的时候就是根据用户名和密码去查询: string sql * FROM [User] WHERE UserName ...

  5. 10年前,我就用 SQL注入漏洞黑了学校网站

    我是风筝,公众号「古时的风筝」,一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农! 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在 ...

  6. 简单分析什么是SQL注入漏洞

    现在很多人在入侵的过程中基本都是通过SQL注入来完成的,但是有多少人知道为什么会有这样的注入漏洞呢?有的会随口说着对于字符的过滤不严造成的.但是事实是这样吗?我们学这些,不仅要知其然,更要知其所以然! ...

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

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

  8. 利用“参数赋值”防范SQL注入漏洞攻击

    <<年轻,无权享受>————送给每一个看到此文的同僚们 在这无精打采的炎夏 我躺在阳台上房东的旧沙发 回想几个月来遇到的问题 我不禁内心开始慌张喘着粗气 还有大把时间去打拼 没有到只 ...

  9. 什么是简单的分析SQL注入漏洞

    如今非常多人在入侵的过程中基本都是通过SQL注入来完毕的,可是有多少人知道为什么会有这种注入漏洞呢?有的会随口说着对于字符的过滤不严造成的. 可是事实是这样吗?我们学这些.不仅要知其然.更要知其所以然 ...

随机推荐

  1. Git与SVN区别 \git学习

    http://blog.csdn.net/w13770269691/article/details/38705473/ https://git-scm.com/book/zh/v2

  2. 基于ArcGIS Flex API实现动态标绘(1.0)

    标绘作为一种数据展示形式,在多个行业都有需求. 基于ArcGIS Flex API(3.6)实现标绘API,当前版本号1.0 alpha,支持经常使用几种标绘符号,包含: 圆弧.曲线.圆形.椭圆.弓形 ...

  3. 轻快的VIM(五):复制

    操作相同文本的时候复制尤其有效,在Windows中我们都习惯了先用鼠标选择文本 而Vim下则不用那么麻烦,你甚至可以使用可视模式操作,但这里先略过 我在这一节主要说说命令模式下的复制 在讲复制之前我要 ...

  4. 设备树学习之(一)GPIO中断【转】

    本文转载自:http://blog.csdn.net/lizuobin2/article/details/54563587 开发板:tiny4412SDK + S702 + 4GB Flash 要移植 ...

  5. BZOJ 1441 裴蜀定理

    思路: 若a,b是整数,且(a,b)=d,那么对于任意的整数x,y,ax+by都一定是d的倍数,特别地,一定存在整数x,y,使ax+by=d成立. 它的一个重要推论是:a,b互质的充要条件是存在整数x ...

  6. guice 整合ninja framework(七)

    ninja是一个优秀的,轻量级的mvc框架,它与google guice整合比较好.下面看一下例子: 我们在web.xml 配置一下: <listener> <listener-cl ...

  7. guice基本使用,常用的绑定方式(四)

    guice在moudle中提供了良好的绑定方法. 它提供了普通的绑定,自定义注解绑定,按名称绑定等. 下面直接看代码: package com.ming.user.test; import com.g ...

  8. Dalvik虚拟机和JVM的对比

    Dalvik虚拟机与Java虚拟机有着很多相似的特性,都支持GC,JIT,JNI等等.其主要区别在于文件格式以及指令集不同,下面对两者的特性进行比较与讨论. Difference1:文件格式 Dalv ...

  9. java8-1-interface接口

    Java 8 允许我们使用default关键字,为接口声明添加非抽象的方法实现.这个特性又被称为扩展方法 sample: interface Formula { double calculate(in ...

  10. fabric.js 翻转,复制粘贴,隐藏, 删除,历史记录,撤销, 剪切, 图层,组合打散,锁定等功能

    用vue写的 显示,隐藏 hide(){ this.canvas.getActiveObject().set('opacity', 0).setCoords(); this.canvas.reques ...