网站地图    收藏   

主页 > 后端 > 网站安全 >

Web应用安全检测和防御机制 - 网站安全 - 自学p

来源:自学PHP网    时间:2015-04-16 23:14 作者: 阅读:

[导读] 随着互联网逐渐深入人们的生活,互联网企业也从单纯的信息供给过度到应用供给的时代,从早期的门户之争,慢慢演变成应用之战。人们可以在互联网上完成购物、社交、拍卖、交易...

随着互联网逐渐深入人们的生活,互联网企业也从单纯的信息供给过度到应用供给的时代,从早期的门户之争,慢慢演变成应用之战。人们可以在互联网上完成购物、社交、拍卖、交易等日常的行为,也形成了拥有上亿用户规模的Web应用程序,比如Facebook,新浪微博等。互联网企业在提供良好用户体验的同时,加强Web应用程序安全无疑是其当务之急,数量庞大的服务器、无数的Web应用以及研发运营的安全素质参差不齐,无疑给企业带来了更多的安全挑战,其主要内容是攻击数量越来越频繁,攻击来源呈现团队化,攻击手段越来越多元化,攻击方面主要包括:XSS跨站攻击,SQL注入,命令执行,网络钓鱼,恶意代码等,攻击时间可能在短短的几秒到几分钟中就能完成一次数据窃取、一次脚本木马植入,或者完成对整个数据库或者服务器的控制,给企业带来非常严重的有形或者无形的损失。本文试着从Web应用程序检测和防御角度来讨论互联网企业的面临的安全风险和应对措施。
 
Web应用的安全检测
 
Web应用的安全检测从安全测试的角度大致可划分为三种技术:黑盒测试、白盒代码审计和灰盒测试。灰盒测试实质是黑盒与白盒两种技术的结合。既互相佐证,又互相包含,从理论上来分析白盒代码审计结果应该包含黑盒测试的内容,但是限于审计工具的疏漏和人员的精力等因素,往往有所偏差。在日常的安全测试中一般通过黑盒测试和白盒代码审计来相互弥补固有的缺陷。 Web防御机制的检测其实质不是绕过多少防御措施进行攻击,而是力求Web应用的安全测试路径的覆盖率达到100%。不是证明Web应用程序有哪些漏洞,而是证明Web应用程序是安全可控的,在经过黑盒白盒两轮测试后,能说此Web应用程序是安全的。
Web应用的黑盒测试,主要使用的技术有利用Web爬行分析URl进行检测,比如常见的Web应用漏洞扫描(AWVS,WebInspect)等,当然大型的互联企业大多都拥有自己开发的扫描,但其缺陷在于没有爬行的目录或者链接将无法检测,稍带有点逻辑的参数应用,将会无法完成全面的测试,只能通过采用多种扫描器的检测结果对比和对业务逻辑的理解来弥补。其覆盖的范围包括:用户的访问测试,用户输入的测试,异常与错误的测试,根本能达到60%的覆盖率。
Web应用的白盒测试,较成熟的技术是代码静态分析,比如商业的Fortify,通过白盒测试能解决的问题包括类型变量检查,用户输入检测,高风险函数检测,部分应用逻辑检测。相比黑盒测试,其覆盖的内容将更详细与全面,但其依然会产生漏报和更多的误报。其检测的路径覆盖根本能达到70%。
以上两种主要的安全测试技术虽然存在各自固有的缺陷,但在实际应用中合理的扬长避短却也能符合安全测试的最终目标。以下为总结的几点Web安全测试原则。
(1) 理解Web应用业务,明确存在高风险漏洞的类型,投入的安全测试资源将以找到高风险漏洞为主要目标。
(2) 核心的Web应用业务测试从不同的测试入口进入,采用多人代码审计原则。
(3) 参照Web应用业务的接口函数,构造更多的测试Url和不同类型的数据。
Web安全测试的覆盖路径虽不能达到理想的100%,但是使用合理的技术和方法,还是能保证业务安全稳健,在其中人的安全经验是最关键的因素。
 
Web应用的防御机制
 
简单一点的说防御机制就是不信任用户的任何输入,即所有用户输入都不可信。从处理用户的访问,处理用户的输入,和处理异常错误这三方面来综合考虑Web应用程序防御措施的建立。
1. 处理用户的访问
首先用户的访问包括身份验证,会话管理,访问控制这三个相互关联的安全机制来建立:
(1) 身份验证是Web程序针对来访者最基本的安全机制,用来确定用户的真实身份。常见的验证方式有基于表单的验证,口令卡或者硬件key,或者SSL证书等,但大多Web应用程序基于用户体验考虑,均采用最简单的用户名与密码的方式,并且还需要用户的部分参与,而用户自身的安全意识就决定了本身的缺陷,比如用户可能使用比较短的密码,常见的单词或者生日等。攻击者可能通过字典进行暴力破解,通过社工进行密码猜解。大多数用户均喜欢使用一个密码多用,将会导致安全边界将向外延伸。在具体的对抗中,Web应用程序将会添加手机绑定,邮箱绑定,密码长度检测,密码问题找回等策略来补充,从实际只是增加了用户名被破解的难度。当然在一些具体的策略中,会有相互冲突的时候,比如攻击者在修改绑定手机时,应该向旧手机和新手机同时发送密码修改信息等。 
(2) 会话管理是指Web应用程序追踪用户的交互状态,而通过发布标识会话令牌的来保持联系。常见的实现方法有Http Cookie,隐藏表单传值,Url传值等,其安全性取决于令牌的安全性,在实际中,可能会面临多个设备之间的通用性,比如PC浏览器,手机浏览器等会有很大的区别,一些Web应用程序在手机中通常使用一个Url传送其令牌,而且为了更好的用户体验通常会使用持久性,这样的实现方法存在的风险是一旦令牌泄露,即用户会话将被劫持。所以,在设置会话管理中会增加时间戳,二次令牌,来路判断,等措施。
(3) 访问控制是Web应用程序在身份验证后确认用户访问权限的机制,是否允许或者拒绝用户请求,常见于有用户角色区分的Web应用程序,比如某些应用,通过一个标示符来区别,形如:isadmin=ture,来判断管理员权限,但是普通用户在其url添加后同样拥有管理员权限。从而可以看出访问控制的安全性还是在于其使用的标示符的安全性,当然包括其在传输,破解强度,存亡周期,有密切的关系
从以上分析讨论,可以得出Web应用程序在处理用户访问的过程,可能使用更多元的安全策略来防范单一方法的缺陷,可以通过更细化的权限分配来抵抗可能存在缺陷。
2. 处理用户的输入
由于Web应用程序需要与用户进行数据交互,处理用户输入内容的原则是“所有用户的输入都是不安全的”,即不信任提交的所有数据。在实践中,通常对抗的措施有:
(1) 输入的内容,类型,长度,编码等属性的检测。
在对用户输入的内容,进行类型检测,比如手机号可检查数字型,字符型的长度限制,进行内容编码的强制转换。
(2) 输入内容的黑白名单设计。
输入内容的黑白名单的设计,是基于对可控数据的最小化原则,便于有针对性的检测可控数据。比如富文本的标签白名单限定,将降低绕过的风险。
(3) 输入内容的安全净化。
在输入内容的安全净化中,可以使内容按可控的方式传递保存,比如在Web前端进行的Html编码,对进入数据库的内容进行有针对性的转义,如”’”转成”\’” “\” 转成”\\”等,从而使输入内容安全可控。
3. 处理异常与错误
良好的Web应用程序的异常与错误处理机制是为程序编写人员更好的追踪分析Bug提供依据,但可能被攻击者使用。比如数据库查询的暴错,类型强制转换,网页响应的返回时间等都可以作为判断Sql注入的依据。一般大型的Web应用程序其类消息都是屏蔽在前端显现的而自定义了错误内容,将更利于安全性的提高。
Web应用防御机制的一句话原则就是“怀疑一切用户的输入数据”。 对来自外部的数据处理采用属性控制,内容控制,安全净化等手段来建立其防御机制。
 
小结
本文从Web应用的防御机制的三个方面:用户的访问,用户的输入和异常错误的处理,详细的阐述的Web应用安全的风险和其防御机制的安全测试内容,总结出Web安全测试的三条原则,用于指导安全测试的工作

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

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

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

添加评论