网站地图    收藏   

主页 > 后端 > 网站安全 >

Java中SQL injection 分析(初级篇) - 网站安全 - 自

来源:自学PHP网    时间:2015-04-17 13:03 作者: 阅读:

[导读] 随风潜入夜(doie.Netjavaweb.org)Java中有SQL注入吗?怎么注入?注入的前提是什么?让我们一起来分析下Java中的SQL注入可行性吧。首先创建名为javaweb的数据,包含表:ad。Ad表包含的字段有...

随风潜入夜(doie.Net&javaweb.org)

Java中有SQL注入吗?怎么注入?注入的前提是什么?让我们一起来分析下Java中的SQL注入可行性吧。

首先创建名为javaweb的数据,包含表:ad。Ad表包含的字段有:id(自增,主键),adname(广告名称),adimages(广告的展示图片),urls(提供广告的厂商链接),dates(有效天数),subuser(提交广告的厂商名)。

在Phpmyadmin内执行如下Sql语句:

 

create table ad(

id int NOT NULL AUTO_INCREMENT PRIMARY KEY ,

adname text,

adimages text,

urls text,

dates int,

subuser varchar(12)

)ENGINE = innodb DEFAULT CHARACTER SET utf8;

insert ad values ('','梦幻西游','images/ad/1.jpg','http://baidu.com','12','网易');

insert ad values ('','穿越毛线','images/ad/2.jpg','http://google.com.hk','14','腾讯');

 

 

 

 

 

如图:

 


 

为了让本文更加的简单,以便于那些没有学过Java的朋友也能理解我会经可能的把代码简单化并给必要的代码加上注释。

 

 

 

 

 

 

 

主要代码:

 

 

 

 

 

看程序测试方法:

 

 


 

我们可以通过在这里设值,达到控制SQL查询结果:

List list=i.getAdById("1");//开始传值

当我传1时查询结果如图:

 

 


 

 

 

传1 and 1=1查询结果,可见依旧是正常的。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

当执行1 and 1=2 时查询结果是不存在的,所以没有显示任何结果。剩下的,相信我不说身为大黑阔的你也懂的。

 

 

 


 

现在我们用预编译方式来执行 1 and 1=2试试:

 

 


 

 

 

 

可以看到可以正常的执行并显示结果。请注意看控制台的args:输出的是1 and 1=2可是and 1=2并没有带入数据库查询。对比不难发现所谓预编译查询肯定是对SQL语句进行了相应的处理。

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论