Open Web Application Security Project(OWASP)是世界范围内的非盈利组织,关注于提高软件的安全性。它们的使命是使应用软件更加安全,使企业和组织能够对应用安全风险作出更清晰的决策。目前,OWASP在全球有超过140个分会,其中包括中文分会。该组织从2003年开始每隔几年就会发布Web应用程序的十大安全风险,针对云计算的安全问题,还提出过云计算十大安全风险,可参考主站中文站的文档。2013年6月,它们发布了最新的Web应用十大安全风险。完整的风险列表和多种语言文档可以在该地址进行下载。中国分会也提供了中文版文档的下载服务。该文档基于Creative Commons Attribution ShareAlike 3.0 license许可协议。

相对于2010版的十大风险,该版本新添加了一类风险,以涵盖更普遍、更重要的安全漏洞; 并基于最新的流行程度数据,对一些风险重新排序。另外,该版本通过创建一类特定风险而引入了“组件安全”风险, 并移除了2010年版中的A6“安全配置错误”风险。

2013年版的OWASP十大风险文档所基于的8个数据组由7家专业的应用安全公司提供。数据涵盖了来自上百家组织上千个应用,超过500,000个漏洞。根据所有这些相关数据挑选和排序,并与可利用性、可检测性和影响程度的综合评估产生了排名前十的安全风险列表。

OWASP十大风险的首要目的是培训开发人员、设计人员、架构师、经理和企业组织,让他们认识到最严重的Web应用程序安全漏洞所产生的后果。文档中提供了防止这些高风险问题的基本方法,并提供了获得这些方法的来源。

具体来讲,2013版的十大安全风险为:

A1 –注入(Injection)

注入攻击漏洞,例如SQL、OS以及LDAP注入。这些攻击发生在当不可信的数据作为命令或者查询语句的一部分,被发送给解释器的时候。攻击者发送的恶意数据可以欺骗解释器,以执行计划外的命令或者在未被恰当授权时访问数据。

A2-失效的身份认证和会话管理(Broken Authentication and Session Management

与身份认证和会话管理相关的应用程序功能往往得不到正确的实现,这就导致了攻击者破坏密码、密匙、会话令牌或攻击其他的漏洞去冒充其他用户的身份。

A3-跨站脚本 (Cross-Site ScriptingXSS)

当应用程序收到含有不可信的数据,在没有进行适当的验证和转义的情况下,就将它发送给一个网页浏览器,这就会产生跨站脚本攻击(简称XSS)。XSS允许攻击者在受害者的浏览器上执行脚本,从而劫持用户会话、危害网站、或者将用户转向至恶意网站。

A4-不安全的直接对象引用(Insecure Direct Object References

当开发人员暴露一个对内部实现对象的引用时,例如,一个文件、目录或者数据库密匙, 就会产生一个不安全的直接对象引用。在没有访问控制检测或其他保护时,攻击者会操控这些引用去访问未授权数据。

A5–安全配置错误(Security Misconfiguration

好的安全需要对应用程序、框架、应用程序服务器、Web服务器、数据库服务器以及平台定义和执行的安全配置。由于许多设置的默认值并不是安全的,因此,必须定义、实施和维护这 些设置。这包含了对所有的软件保持及时地更新,包括所有应用程序的库文件。

A6 –敏感信息泄漏(Sensitive Data Exposure

许多Web应用程序没有正确保护敏感数据,如信用卡、税务ID和身份验证凭据。攻击者可能会窃取或篡改这些弱保护的数据以进行信用卡诈骗、身份窃取或其他犯罪。敏感数据值需额外的保护,比如在存放或在传输过程中的加密,以及在与浏览器交换时进行特殊的预防措施。

A7 –功能级访问控制缺失(Missing Function Level Access Control

大多数Web应用程序的功能在UI中可见以前,会验证功能级别的访问权限。但是,应用程序需要在每个功能被访问时在服务器端执行相同的访问控制检查。如果请求没有被验证,攻击者能够伪造请求从而在未经适当授权时访问功能。

A8 –跨站请求伪造 (Cross-Site Request ForgeryCSRF)

一个跨站请求伪造攻击迫使登录用户的浏览器将伪造的HTTP请求,包括该用户的会话cookie和其他认证信息,发送到一个存在漏洞的Web应用程序。这就允许攻击者迫使用户浏览器向存在漏洞的应用程序发送请求,而这些请求会被应用程序认为是用户的合法请求。

A9 –使用含有已知漏洞的组件(Using Components with Known Vulnerabilities

组件,比如:库文件、框架和其他软件模块,几乎总是以全部的权限运行。如果一个带有漏洞的组件被利用,这种攻击可以造成更为严重的数据丢失或服务器接管。应用程序使用带有已知漏洞的组件会破坏应用程序防御系统,并使一系列可能的攻击和影响成为可能。

A10 –未验证的重定向和转发(Unvalidated Redirects and Forwards

Web应用程序经常将用户重定向和转发到其他网页和网站,并且利用不可信的数据去判定目的页面。如果没有得到适当验证,攻击者可以重定向受害用户到钓鱼软件或恶意网站, 或者使用转发去访问未授权的页面。

在OWASP的文档中,有各安全风险的案例以及预防办法,除此之外还有丰富的参考文档。不过,该组织也提示我们,不应仅关注这十大风险,正如在《OWASP开发者指南》《OWASP Cheat Sheet》中所讨论的,能影响整个Web应用程序安全的漏洞成百上千。这些指南是当今Web应用程序开发人员的必读资料。而《OWASP测试指南》和 《OWASP代码审查指南》则能够指导人们有效地查找Web应用程序中的漏洞。

随着Web应用程序积累的用户信息越来越多,越来越敏感,安全问题的重要性也被提升到了前所未有的程度。对比OWASP所列出的十大安全风险,我们能够排查出Web程序的很多漏洞,从而帮助我们构建更为安全的网络应用,减少终端用户的上网风险。关于OWASP所提供的更多安全知识,请参阅其主站和中文分会站点,据了解,为了让更多的中国开发者了解这十大风险,中文分会还会组织相关的培训。

文章来源于:http://www.infoq.com/cn/news/2013/11/owasptop10

转:OWASP发布Web应用程序的十大安全风险的更多相关文章

  1. IIS发布web应用程序之再折腾

    最近几个月发布程序比较多,遇到了各种IIS发布web程序后无法访问的问题.原以为对各种问题都已经摸的差不多了,但今天又为一问题折腾了大半天.具体过程祥记如下: 在server2008 R2 64位系统 ...

  2. Java9发布回顾Java 8的十大新特性

    java9已经在北京时间9月22日正式发布,开发者可以在oracle jdk官网上下载到最新的jdk9. 今天,我们先来一起复习一下2014年发布的Java 8的十大新特性.先来喝杯java~~~ 按 ...

  3. Java9都快发布了,Java8的十大新特性你了解多少呢?

    Java 9预计将于今年9月份发布,这是否会是一次里程碑式的版本,我们拭目以待.今天,我们先来复习一下2014年发布的Java 8的十大新特性. Java 8可谓是自Java 5以来最具革命性的版本了 ...

  4. vs2012 发布web应用程序

    Visual Studio 2012 Visual Studio Express 2012 for Web 与 的Visual Studio 2010  Visual Studio Web发布更新 与 ...

  5. ASP.NET网站怎么发布 Web项目程序怎么发布部署(暂时收藏)

    Web程序如何发布部署呢.网站项目做好了,需要发布出来,提交给客户,装上服务器.那怎么在ASP.NET开发环境中将网站程序发布出来呢 ^_^   工具/原料 Visual Studio 2010  ( ...

  6. 发布Web应用程序时发生的“xx.aspx.cs文件不存在”错误

    (注意:这里说的Web应用程序并不是Web网站) 在VS里调试.IIS里浏览含.CS源码的项目都是没有问题的.但是发布后,所有的.CS文件都被编译到bin文件夹里去了.在IIS里浏览,发生“分析器错误 ...

  7. msbuild发布web应用程序

    aspnet_compiler.exe 只能编译 网站,web应用程序项目使用下面的命令即可. msbuild C:\Jenkins\jobs\KM_ERP_WEBAPP\workspace\KMWe ...

  8. 程序员十大热门flag,有你的吗?

    2018的尾声,南方人期盼已久的下雪天终于到了,实在是太鸡冻了! 而赏雪的喜悦也伴随着寒冷的忧伤 早上起床越来越难,衣服怎么裹都还是冷 这时,穿搭届的神话般的人物——程序员们,可能又要引起轰动了吧! ...

  9. 如何在Visual Studio 2012中发布Web应用程序时自动混淆Javascript

    同Java..NET实现的应用程序类似,Javascript编写的应用程序也面临一个同样的问题:源代码的保护.尽管对大多数Javascript应用公开源代码不算是很严重的问题,但是对于某些开发者来说, ...

随机推荐

  1. [置顶] VC++界面编程之--使用分层窗口实现界面皮肤

    使用分层界面来实现界面皮肤的好处是:可以保证图片边缘处理不失真,且能用于异形窗口上,如一些不规则的窗口,你很难用SetWindowRgn来达到理想效果. 在很多情况下,界面的漂亮与否,取决于PS的制作 ...

  2. 解码美国传奇网络券商:TradeStation

    证券时报记者 桂衍民 张欣然 5万客户,交易量却占美国网络券商8%,网络影响力已连续两年被评为全美前五名,说起美国网络证券,必提TradeStation. TradeStation的确是美国证券界的一 ...

  3. Java 获取今天之前的七天 的日期

    package test; import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date; pub ...

  4. ie8下$(document).on('mouseover mouseout','ul li',function(){})的bug

    $(document).on('mouseover mouseout','ul li',function(){ if (event.type == 'mouseover') {           c ...

  5. [转] Java中ArrayList类的用法

    1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和ILis ...

  6. [转] C++中临时对象及返回值优化

    http://www.cnblogs.com/xkfz007/articles/2506022.html 什么是临时对象? C++真正的临时对象是不可见的匿名对象,不会出现在你的源码中,但是程序在运行 ...

  7. Android(java)学习笔记217:开发一个多界面的应用程序之清单文件

    清单文件的重要参数:     <intent-filter>             代表的应用程序的入口界面           <action android:name=&quo ...

  8. android高效ORM数据库框架greenDao使用

    因为项目中多处用到了数据库,需要对数据库频繁的读写操作,虽然android 自带的SQLiteOpenHelper的.这种方式比较方便易懂,但是在使用过程中需要写很多的sql语句,而且需要及时的关闭和 ...

  9. iOS多线程编程之GCD的使用

    什么是线程呢? 1个CPU执行的CPU命令列为一条无分叉的路径即为线程. 这种无分叉路径不止1条,存在多条时即为多线程. 什么是GCD? Grand Central Dispatch (GCD)是异步 ...

  10. yii2 控制器里 action 大小写组合造成的路由问题

    yii1中, 若存在如下控制器 class BindController extends CController { public function actionGetMobilePhone () { ...