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. ionic之应用首次启动引导页

    用户首次启动app先进入引导页,localstroge记录状态,下次启动应用不再显示引导页. HTML: <html> <head> <meta charset=&quo ...

  2. Lucene多字段搜索

    最近在学习Lucene的过程中遇到了需要多域搜索并排序的问题,在网上找了找,资料不是很多,现在都列出来,又需要的可以自己认真看看,都是从其他网站粘贴过来的,所以比较乱,感谢原创的作者们!     使用 ...

  3. 概率dp-九度-1546-迷宫问题

    题目链接: http://ac.jobdu.com/problem.php?pid=1546 题目意思: 有一个起点S,多个出口E,#代表不能走,每次等概率的随机选择下一个可以行走的位置,求从S到出口 ...

  4. 再探java基础——对面向对象的理解(2)

    对象.类和抽象类的区别 对象是一个具体的事物,类是对具有相同属性和行为的一组对象的抽象,对象是类的一个一个人的具体实例:抽象类是一种特殊的类,是对类的进一步抽象,抽象类不能被实例化. 类.抽象类和接口 ...

  5. 数据库系统——B+树索引

    原文来自于:http://dblab.cs.toronto.edu/courses/443/2013/05.btree-index.html 1. B+树索引概述 在上一篇文章中,我们讨论了关于ind ...

  6. 【Python之旅】第六篇(七):开发简易主机批量管理工具

    [Python之旅]第六篇(七):开发简易主机批量管理工具 python 软件开发 Paramiko模块 批量主机管理 摘要: 通过前面对Paramiko模块的学习与使用,以及Python中多线程与多 ...

  7. JavaBean学习--练习示例

    初识Javabean,没感觉这鸟东西有什么好用的,一定是我太笨了 自己用jsp测试了下,这里用application作用域做个示例 <%@ page language="java&qu ...

  8. Python的基本配置

    Python是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结 ...

  9. Mysql 中和同to_char 一样用法的函数

    STR_TO_DATE() $sql = " SELECT "; $sql .= " m_img,m_content,STR_TO_DATE(m_time,\" ...

  10. 樱花雨 www.yinghy.com

    自己刚申请的域名,和主机,以后就用这个来试着做点东西