Web安全-XSS攻击

跨站脚本攻击(XSS)是客户端脚本安全中的头号大敌。OWASP TOP10威胁多次把XSS列在前三。本系列将探讨XSS攻击的原理,以及如何正确地防御它。

第0章 OWASP TOP 10

开放式Web应用程序安全项目(OWASP,Open Web Application Security Project)是一个非营利组织,不附属于任何企业或财团。因此,由OWASP提供和开发的所有设施和文件都不受商业因素的影响。OWASP支持商业安全技术的合理使用,它有一个论坛,在论坛里信息技术专业人员可以发表和传授专业知识和技能。

OWASP Top10漏洞体系长期以来作为Web攻防白帽子既基础又核心的一个标准。

黑帽子,白帽子(摘自《白帽子讲Web安全》):

在黑客的世界中,往往用帽子的颜色来比喻黑客的好坏。白帽子,则是指那些精通安全技术,但是工作在反黑客领域的专家们;而黑帽子,则是利用黑客技术造成破坏,甚至进行网络犯罪的群体。

对于白帽子来说,只要能够找到系统的一个弱点,就可以达到入侵系统的目的,而对于白帽子来说,必须找到系统的所有弱点,不能有遗漏,才能保证系统不会出现问题。这种差异是由于工作环境和工作目标的不同所导致的。白帽子一般为企业或安全公司服务,工作的出发点就是要解决所有的安全问题,因此所看所想必然要求更加的全面、宏观;黑帽子的主要目的是要入侵系统,找到对他们有价值的数据,因此黑帽子只需要以点突破,找到对他们最有用的一点,以此渗透,因此思考问题的出发点必然是有选择性的、微观的。

从对待问题的角度来看,黑帽子为了完成一次入侵,需要利用各种不同漏洞的组合来达到目的,是在不断地组合问题;而白帽子在设计解决方案时,如果只看到各种问题组合后产生的效果,就会把事情变复杂,难以细致入微地解决根本问题,所以白帽子必然是在不断地分解问题,再对分解后的问题逐个予以解决。

2017年4月10日,OWASP组织对外发布了“ReleaseCandidate”版本的《OWASP Top 10 2017》文档,OWASP中国根据OWASP组织发布的消息,组织发布《OWASP Top10 2017RC1》中文版。

《OWASP Top 10》提供了10类最严重的Web应用程序安全风险。对于每类风险,提供了以下信息: 对风险的描述。 漏洞样例 攻击案例 对漏洞防止的指导 

2017 RC1版Top 10风险

A1—注入

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

A2—失效的身份认证和会话管理

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

A3—跨站脚本(XSS)

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

A4—失效的访问控制

对已通过身份验证用户的运行限制,没有得到恰当的强制执行。攻击者可以利用这些缺陷访问未经授权的功能和/或数据, 例如:访问其他用户的帐户、查看敏感文件、修改其他用户的数据、更改访问权限等。

A5—安全配置错误

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

A6—敏感信息泄漏

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

A7—攻击检测与防护不足 大多数应用程序和API都缺乏检测、防止和响应手动和自动攻击的基本能力。攻击防护远远超出了基本的输入验证,并涉及到自动检测、记录、响应,甚至阻止漏洞的利用企图。应用程序所有者还需能够快速部署修补程序以防止攻击。

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

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

A10—未受到充分保护的API 现代应用程序通常涉及富客户端的应用程序和API,如:在浏览器和移动应用程序中的JavaScript,它们连接到某种API(如:SOAP/XML、REST/JSON、RPC、GWT等)。这些API通常是没有保护的, 并且包含大量漏洞

上一篇:java – OWASP html sanitizer – 为什么它会覆盖某些实体?


下一篇:javascript – 跨站点脚本:用于HTML内容的encodeForHTML(OWASP Enterprise Security API)