web编程常见漏洞与检测.ppt
《web编程常见漏洞与检测.ppt》由会员分享,可在线阅读,更多相关《web编程常见漏洞与检测.ppt(33页珍藏版)》请在三一办公上搜索。
1、Web编程常见漏洞与检测,Web漏洞检测,白盒检测对检测者的要求:能读懂用此语言写的程序明白漏洞成因漏洞挖掘经验常用的web脚本语言:Asp/Php/Jsp/,常见的web漏洞,sql注入文件上传cookie欺骗XSS攻击文件包含其他,Sql注入及其危害,所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。通过递交参数构造巧妙的SQL语句,从而成功获取想要的数据。分为字符型注入和数字型的注入,由于编程语言不同,所存在的注入类型也不同。危害:-非法查询其他数据库资源,如管理员帐号。-执行系统命令-获取服务器root权限
2、,Sql注入原理,Test.asp文件代码片段:sqlStr=“select*from n_user where username=”&username&”and password=“&password&”rs=conn.execute(sqlStr)正常的查询:test.asp?username=test&password=123sqlStr=“select*from n_user where username=test and password=123“使password=123 or 1=1:Sql语句到数据库后:sqlStr=“select*from n_user where user
3、name=test and password=123 or 1=1“Or 1=1始终成立。,Asp表现,存在数字型和字符型注入。(A)数字型 字段=51Select*from 表名 where 字段=51 构造参数:ID=49 And 查询条件 生成语句:Select*from 表名 where 字段=49 And 查询条件(B)字符型的另一种形式搜索语句:Select*from 表名 where 字段like%关键字%构造参数:keyword=and 查询条件 and%25=生成语句:Select*from 表名 where字段like%and 查询条件 and%=%,Asp注入的预防,对于
4、用户端输入的任意字符,包括GET提交,POST提交,Cookie提交,SERVER提交的都需要做严格过滤。对于数字型参数判断是否为数字:可用函数isNumeric来判断,返回值为true和false。对于字符型参数过滤单引号,使其无法闭合当前sql语句的单引号。例外:base64编码Sql通用防注入,Php中的表现,Php的魔术引号(magic_quotes_gpc)。php.ini-dist 默认是开启此功能。如果安装php时使用此文件,将不会产生字符型注入,主要是数字型注入。数字型注入:select*from guess where id=“.$id.”select*from guess
5、where id=$id,GPC不起作用的情况,数组$userid=$_POSTuserid;for($i=0;$icount($userid);$i+)$query=“select*from user where i_hid=.$userid$i.;编码函数引起base64_decode,base64编码后的单引号:Jw=mysql处理GBK编码字符%bf%27导致单引号被绕过的问题。其他数据库,如ms sql。对于转义符反斜杠作为字符处理的。select*from test where title=aaa or 1=1,Php注入的预防(一),确认GPC开启,若没开启则用addslashe
6、s 函数过滤之,如下代码。if(!get_magic_quotes_gpc()$lastname=addslashes($_POSTlastname);else$lastname=$_POSTlastname;对于数字型参数可使用intval 或floatval 强制转换为数字型。注意mysql的版本以及默认字符集,Mysql4.1字符集连接字符串:mysql_query(SET character_set_connection=$dbcharset,character_set_results=$dbcharset,character_set_client=binary;);,Php注入的预防
7、(二),Php5以上版本Mysqli扩展预防,参数化查询$city=Amersfoort;/*create a prepared statement*/$stmt=$mysqli-prepare(SELECT District FROM City WHERE Name=?)$stmt-bind_param(s,$city);$stmt-execute();$stmt-bind_result($district);$stmt-fetch();printf(%s is in district%sn,$city,$district);$stmt-close();,Jsp 表现,由于java语言是强类
8、型语言,所有变量定义前必须声明其类型,因而仅存在字符型的注入。字符型注入实例:String sql=select*from tb_name where name=+varname+and passwd=+varpasswd+;stmt=conn.prepareStatement(sql);构造参数varpasswd值为:or 1=1 Sql语句经过解析后将是:select*from tb_name=随意 and passwd=or 1=1;,Jsp预防,采用jdbc的prepareStatement查询数据库,并且sql语句中不出现参数,如:sqlStr=“select id from inf
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- web 编程 常见 漏洞 检测
链接地址:https://www.31ppt.com/p-2504181.html