随风潜入夜(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语句进行了相应的处理。
查看更多关于Java中SQL injection 分析(初级篇) - 网站安全 - 自的详细内容...