WEB开发安全与防御策略课件_第1页
WEB开发安全与防御策略课件_第2页
WEB开发安全与防御策略课件_第3页
WEB开发安全与防御策略课件_第4页
WEB开发安全与防御策略课件_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

WEB开发安全与防御策略By陈于喆WEB开发安全与防御策略By陈于喆1目录1.核心防御机制2.攻击验证机制3.攻击会话管理4.攻击访问控制5.代码注入6.利用路径遍历目录1.核心防御机制2目录7.跨站脚本8.重定向攻击9.json劫持10.缓存区溢出和整数漏洞11.攻击web服务器12.查找源代码中的漏洞目录7.跨站脚本3核心防御机制概述SSL安全协议 我们在一些站点有时候会看到“本站点使用SSL技术,您可以放心使用本站点,我们提供绝对的安全的数据保障

SSL可以为用户额web服务器传输的数据提供机密性与完整性的保护功能,防止信息泄露,但SSL并不能防御直接针对应用程序的服务器或客户组建的攻击核心防御机制概述SSL安全协议4核心防御机制概述许多的攻击成功是对于漏洞的攻击,据统计我们的应用程序主要存在漏洞被攻击的主要表现类别 1.不完善的身份验证 2.不完善的访问控制 3.各种注入和路径遍历 4.跨站脚本 5.信息的泄露 6…核心防御机制概述许多的攻击成功是对于漏洞的攻击,据统计我们的5WEB应用程序的几个核心防御机制

处理用户访问应用程序的数据和功能 1.身份验证 2.会话管理 3.访问控制WEB应用程序的几个核心防御机制处理用户访问应用程序的数据6WEB应用程序的几个核心防御机制处理用户对应用程序功能的输入 1.拒绝已知的不良输入

(也就是我们所说的黑名单,效率低,无法抵御未知的攻击)

2.接受已知的正常输入

(白名单,最有效的方法,但无法满足各式各样输入的需求)

3.净化数据

(可能存在的恶意字符将其进行适当的编码或转义,只留下已知的安全字符)

4.安全数据处理

(在程序进行数据处理时,采用相关的安全机制,如如在处理数据库访问过程中使用参数化配置查询,就可以避免SQL注入的攻击)WEB应用程序的几个核心防御机制处理用户对应用程序功能的输入7WEB应用程序的几个核心防御机制边界确认 边界确认是一种更有效的模型,此时服务器端应用程序的每一个单独的组件或功能单元将其输入当作潜在的恶意来源输入对待

WEB应用程序的几个核心防御机制边界确认8WEB应用程序的几个核心防御机制多步确认和规范化

在确认的检查过程中,需要几个步骤处理用户提交的输入,如为了防御跨站脚本的攻击,应用程序过滤用户提交的数据中的<Script> 但攻击者可以通过<scr<script>ipt>,由于过滤无使用递归运行,过滤的表达式周边的数据又合并在一起,重新建立起恶意的表达式。WEB应用程序的几个核心防御机制多步确认和规范化9攻击验证机制验证技术1.基于HTML表单的验证(90%以上都采用这种机制)2.多元机制,如组合型密码和物理令牌(多见于银行等)3.客户SSL证书或智能卡(成本高昂,用户不多的关键安全应用程序才会使用)4.使用NTLM整合Windows的验证攻击验证机制验证技术10验证机制设计的缺陷

1.系统对密码保密性要求不强

2.允许蛮力攻击登录

3.详细的失败登录消息

4.证书传输容易受到攻击 (如果使用非加密的http链接传输证书,处于网络适当的位置的窃听者可以拦截到这些证书.窃听者可以处在,用户本地网络上,用户的it部门上,用户的ISP上,托管应用程序的ISP内等等)

5.记住我的功能 (过于简单的cookie执行,如rememberuser=chenyz,即使cookie中保存用于,重新识别用户的信息得到适当的保护(加密)以防止用户进行判断和猜测,但攻击者通过跨站脚本之类的漏洞依然可以进行获得信息。)验证机制设计的缺陷 11保障验证机制的安全

1.使用可靠的证书 2.安全处理证书(1)必须保证使用HTTPS加载表单(2)只能使用POST请求向服务器传输证书,不能将证书放在URL参数或cookie中,不能将证书返还给用户(3)保存证书,最常使用强大的散列函数,即使攻击者能够访问到应用程序数据库中的数据,他们也无法轻易的恢复证书(4)即使使用记住我的功能,在这情况下,客户不适宜保存明文证书,必须使用密钥加可逆的形式保存密码,且只有服务器知道密钥)(5)用户有责任定期修改密码

保障验证机制的安全 1.使用可靠的证书12保障验证机制的安全 3.正确验证证书 4.防止信息泄漏 5.防止蛮力攻击 6.防止滥用密码修改功能 7.日志,监控和通知保障验证机制的安全 3.正确验证证书13问题http//**.163.com/tech.action=login&name=chenyz&password=163a163 有何漏洞问题http//**.163.com/tech.action14攻击会话管理从本质上讲,HTTP协议没有状态。它基于一种简单的请求-响应模型,其中每对消息代表一个独立的事务。协议本身并无将某位用户提出的各种请求联系起来的机制,并将它们与Web服务器收到的所有其他请求区分开来,执行会话的最简单、也是最常见的方法就是向每名用户发布一个唯一的会话令牌或标识符。和验证机制一样,通常会话管理功能中也存在着大量缺陷,攻击者只需递增应用程序向他们发布的令牌值,就可以转换到另一名用户的账户。攻击会话管理从本质上讲,HTTP协议没有状态。它基于一种简单15攻击会话管理会话管理机制中存在的漏洞主要分为两类:1.会话令牌生成过程中的薄弱环节;2.在整个生命周期过程中处理会话令牌的薄弱环节。攻击会话管理16会话令牌生成过程中的薄弱环节1.令牌有一定含义(一些会话令牌通过用户的用户名或电子邮件地址转换而来,或者使用与其相关的其他信息创建。这些信息可以某种方式进行编码或模糊处理,也可与其他数据结合在一起。)dXNlcm5hbWU6Y2hlbnl6O2FwcD1hZG1pbjtkYXRlOjIwMTAtMDEtMTI=进行Base64解码username:chenyz;app=admin;date:2010-01-12攻击者可以利用这个会话令牌的含义猜测其他应用程序用户的当前会话。使用一组枚举出的用户名或常见用户名,就能够迅速生成大量可能有效的令牌,并进行测试以确定它们是否有效。会话令牌生成过程中的薄弱环节1.令牌有一定含义17在生命周期过程中处理会话令牌的薄弱环节2.令牌在网络的泄漏一些应用程序在登录阶段选择使用HTTPS保护用户证书的安全,但在用户会话的其他阶段转而使用HTTP。许多Web邮件应用程序以这种方式运作。窃听者无法拦截用户的证书,但仍然可以截获会话令牌/interactive/admin/manage!main;jsessionid=bac6g-DLIaUOzaDU5LBws以这种方式传送会话令牌,它们的会话令牌就可能出现在各种未授权用户能够访问的系统日志中在生命周期过程中处理会话令牌的薄弱环节2.令牌在网络的泄漏18在生命周期过程中处理会话令牌的薄弱环节3.会话的可预测性4.会话终止易受攻击(1)尽可能缩短一个会话的寿命可降低攻击者截获、猜测或滥用有效会话令牌的可能性(1)如果用户不再需要现有会话,终止会话为用户提供一种使其失效的途径,例如服务器端发布一个set-cookie清空指令5.宽泛的cookie范围(1)cookie域限制(2)cookie路径限制在生命周期过程中处理会话令牌的薄弱环节3.会话的可预测性19问题登录应用程序后,服务器建立一下cookieSet-cookie:sessid=amltMjM6MTI0MToxMTk0OcwODYz;一个小时后再次登录得到以后cookie:Set-cookie:sessid=amltMjM6MTI0MToxMTk0ODc1MTMy;我们可以尝试得到什么推论问题登录应用程序后,服务器建立一下cookie20注入解释型语言基于解释型语言的执行方法,产生了一系列的代码注入漏洞,任何实际用途的应用程序都会受到用户提交的数据helloworld.sh#!/bin/shecho$1输入执行./helloworld.sh"helloworld"helloworld但在解释shell脚本环境支持使用反引号(`)插入另一条命令./helloworld.sh"`ls-la`"注入解释型语言基于解释型语言的执行方法,产生了一系列的代码注21SQL注入SQL注入攻击的种类1.没有正确过滤转义字符

SELECT*FROMusersWHEREname='"+userName+"'; SELECT*FROMusersWHEREname='a'OR't'='t';

2.错误的类型处理 SELECT*FROMdataWHEREid="+a_variable+"; SELECT*FROMDATAWHEREid=1;DROPTABLEusers;

3.数据库服务器中的漏洞

MYSQL服务器中mysql_real_escape_string()函数漏洞,允许一个攻击者根据错误的统一字符编码执行成功的SQL注入式攻击SQL注入SQL注入攻击的种类22SQL注入攻击的种类4.盲目SQL注入式攻击

Absinthe的工具就可以使这种攻击自动化5.条件响应6.条件性差错7.时间延误SQL注入攻击的种类4.盲目SQL注入式攻击23防御和检查SQL注入的手段1.使用参数化的过滤性语句2.还要避免使用解释程序3.防范SQL注入,还要避免出现一些详细的错误消息4.使用专业的漏洞扫描工具5.最后一点,企业要在Web应用程序开发过程的所有阶段实施代码的安全检查防御和检查SQL注入的手段1.使用参数化的过滤性语句24渗透攻击测试步骤1.如果原始值为2,我们使用(1+1)或(3-1),程序作出相同回应,表明易受攻击2.如果单引号被过滤掉,我们可以用ASCII命令,使它返回字符的数字化代码,如51-ASCII(1)3.在URL编码中,&和=用于链接名称/值对,建立查询字符串应当分别使用%26和%3d进行编码4.如查询字符串不允许使用空格,使用+或%20编码5.分号被用于分割cookie自读,使用%3d编码渗透攻击测试步骤25利用路径遍历如果应用程序使用用户可控制的数据,以危险的方式访问位于应用服务器或其它后端文件系统的文件或目录,就会出现路径遍历Stringrurl=request.getParameter(“rurl”); BufferedWriterutput2=newBufferedWriter(newFileWriter(newFile(“/home/chenyz/”+rurl)));攻击者可以将路径遍历序列放入文件名内,向上回溯,从而访问服务器上的任何文件,路径遍历序列叫“点-点-斜线”(..\)http://***/go.action?file=..\..\etc\passwd利用路径遍历如果应用程序使用用户可控制的数据,以危险的方式访26避开过滤第一种是过滤文件名参数中是否存在任何路径遍历序列(..\)如果程序尝试删除(..\)来净化用户输入,可以用....//....\/..../\....\\进行URL编码点-->%2e反斜杠-->%2f正斜杠-->%5c进行16为Unicode编码点-->%u002e反斜杠-->%u2215正斜杠-->%u2216进行双倍URL编码点-->%252e反斜杠-->%u252f正斜杠-->

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论