现在通过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. leetcode || 50、Pow(x, n)

    problem: Implement pow(x, n). Hide Tags Math Binary Search 题意:求x的n次幂 thinking: (1)最简单想到的是直观上的数学幂函数求法 ...

  2. hdu 4865 Peter&#39;s Hobby(2014 多校联合第一场 E)

    Peter's Hobby Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  3. ant整合junit自己主动化測试

    一. 使用Junit进行測试 1. Java业务代码: public class HelloWorld { // 測试返回"world" public String hello() ...

  4. QMap的性能,只要超过10个元素,就被QHash彻底拉开差距

    QMap vs. QHash: A small benchmark While working on my Qt developer days 2012 presentation (QtCore in ...

  5. ijkplayer详解AAA

    https://www.jianshu.com/p/c5d972ab0309 https://www.android-arsenal.com/details/1/530 https://stackov ...

  6. 关于作者&情况

    本校第一次做信奥 , 如有错误, 见谅 本人之前从未接触编程, 选择信奥也只是因为怕被其他奥赛给淘汰... 这应该是懦弱吧...... 但自从接触编程以来, 虽然算不上极大的热爱, 但发自内心地喜欢它 ...

  7. pythonOCC版 瓶子代码

    #!/usr/bin/env python # -*- coding:utf-8 -*- ##Copyright 2009-2015 Thomas Paviot (tpaviot@gmail.com) ...

  8. django 实现websocket

    一.简述:django实现websocket,之前django-websocket退出到3.0之后,被废弃.官方推荐大家使用channels. channels通过升级http协议 升级到websoc ...

  9. C#使用ICSharpCode.SharpZipLib.dll进行文件的压缩与解压

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...

  10. Dalvik 堆内存管理与回收

    Dalvik虚拟机用来分配对象的堆划分为两部分,一部分叫做Active Heap,另一部分叫做Zygote Heap.下面基于管理机制来介绍为何分配为这两部分,以及堆内存的管理. 我们从Android ...