资源描述:
《网络安全经典讲解sql注入防范方法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、经典讲解SQL注入原理及防范方法伴随着Web2.0.社交网络、微博等一系列新型互联网产品的兴起,基于Web环境的互联网应用越来越广泛,Web攻击的手段也越来越多样,Web安全史上的一个重要里程碑是大约1999年发现的SQL注入攻击,之后的XSS,CSRF等攻击手段愈发强大,Web攻击的思路也从服务端转向了客户端,转向了浏览器和用户。SQL注入常见攻击技巧SQL注入攻击是Web安全史上的一个重要里程碑,它从1999年首次进入人们的视线,至今已经有十几年的历史了,虽然我们现在已经有了很全面的防范对策,但是它的威力仍然不容小觑
2、,SQL注入攻击至今仍然是Web安全领域中的一个重要组成部分。以PHP+MySQL为例,让我们以一个Web网站中最基本的用户系统来做实例演示,看看SQL注入究竟是怎么发生的。1、创建一个名为demo的数据库:CREATEDATABASE'demo'DEFAULTCHARACTERSETutf8COLLATEutf8_general_ci;2、创建一个名为user的数据表z并插入1条演示数据:CREATETABLE'demo'.'user'(、uid'INT(11)NOTNULLAUTO_INCREMENTPRIMARYK
3、EYCOMMENT'用户uid','username'VARCHAR(20)NOTNULLCOMMENT,用户名'password'VARCHAR(32)NOTNULLCOMMENT'用户密码,)ENGINE=INNODB;INSERTINTO'demo'.'user'(、uid','username、,'password')VALUES1plhwin1,MD5('123456'));实例一通过传入username参数,在页面打印出这个会员的详细信息,编写userinfo・php程序代码:
4、tent-type:text/html;charset=UTF-81);$username=isset($_GET[Username1])?$_GET[Username1]:11;$userinfo=array();if($username){//使用mysqli驱动连接demo数据库$mysqli=newmysqli("localhost","root”,*'root",'demo');$sql=HSELECTuid,usernameFROMuserWHEREusername='{$username}1//mysqli
5、multi_query支持执行多条MySQL语句$query=$mysqli->multi_que“y($sql);if($query){do{$result=$mysqli->store_result();while($row=$resuIt->fetch_assoc()){$userinfo[]=$row;}if(!$mysqli->more_results()){break;}}while($mysqli・>next_result());}}echo'
1,print_r($userinfo,1)J6、e>1;上面这个程序要实现的功能是根据浏览器传入的用户名参数,在页面上打印出这个用户的详细信息,程序写的这么复杂是因为我采用了mysqli的驱动以便能使用到multi_query方法来支持同时执行多条SQL语句,这样能更好的说明SQL注入攻击的危害性。假设我们可以通过http://localhost/test/userinfo.php?username=plhwin这个URL来访问到具体某个会员的详情,正常情况下,如果浏览器里传入的username是合法的,那么SQL语句会执行:SELECTuid^usernameFRO
7、MuserWHEREusername='plhwin'但是,如果用户在浏览器里把传入的username参数变为plhwin';SHOWTABLES--hack,也就是当URL变为http://localhost/test/userinfo.php?username二plhwin';SHOWTABLES--hack的时候,此时我们程序实际执行的SQL语句变成了:SELECTuidjusernameFROMuserWHEREusername='plhwin1;SHOWTABLES--hack注意:在MySQL中.最后连续的两
8、个减号表示忽略此SQL减号后面的语句,我本机的MySQL版本号为5.6.12,目前几乎所有SQL注入实例都是直接采用两个减号结尾”但是实际测试z这个版本号的MySQL要求两个减号后面必须要有空格才能正常注入”而浏览器是会自动删除掉URL尾部空格的,所以我们的注入会在两个减号后面统一添加任意一个字符或单词,本篇文章的S