Web 应用程序安全性

Web 应用程序安全性是通过使用 HTTP 和 HTTPS 协议进行通信的计算机和程序的网络安全性。这是一个极其广泛的领域,存在着安全缺陷和弱点。服务器和客户端上的操作系统都存在安全问题,容易受到攻击。Web 服务器软件和网站启用技术,如 CGI、Java、JavaScript、PERL 和 PHP 都存在潜在的漏洞。与启用 Web 的应用程序通信的浏览器和其他客户端应用程序也存在漏洞。使用任何技术,但最简单的 HTML 的网站,包括任何允许与访客互动的网站,通常都有自己的漏洞。

过去,破坏安全通常只是一种烦恼,但今天的情况很少发生。例如,黑客访问 Web 服务器并对网站进行未经授权的修改(污损)的攻击过去很常见。它们通常是由黑客发起的,他们除了向黑客同胞展示自己的技能或使目标人员或公司尴尬之外,没有动机。然而,大多数目前的安全冲突行为都是出于对金钱的渴望。大多数人试图实现以下一个或两个目标:获取敏感和潜在有价值的私人信息,或获得未经授权的访问和控制网站或网络服务器。

某些形式的 Web 攻击侧重于获取个人信息。这些攻击通常是可能的,即使是针对足够安全以防止攻击者完全控制的网站。攻击者可以从网站获取的信息可以包括客户姓名、地址、电话号码、社会安全号码、信用卡号码、医疗记录和其他私人信息。攻击者可以使用这些信息或将其出售给他人。通过这种攻击获得的大部分信息受到法律保护,所有这些信息都受到习俗和期望的保护。此类冲突行为可能会对私人信息泄露的客户造成极其严重的后果。这些客户最多须保持警惕,防止他人滥用其信用卡、以其名义开立未经授权的信用账户,或彻底侵占其身份(身份盗窃)。在最坏的情况下,客户可能面临被毁的信用评级,甚至被指责为他们没有参与的犯罪活动。

其他 Web 攻击旨在控制(或 损害)一个网站或其运作所在的服务器,或两者兼而有。获得对网站或服务器的控制权的黑客可以使用它来托管未经授权的内容,充当其他 Web 服务器上托管的内容的代理,提供 SMTP 服务以发送未经请求的批量电子邮件,或者提供 DNS 服务以支持其他受损的 Web 服务器上的此类活动。托管在受到攻击的 Web 服务器上的大多数网站都会促进可疑或完全欺诈的业务。例如,大多数网络钓鱼网站和剥削儿童的网站都托管在受损的网络服务器上。

保护您的网站和 Web 服务免受这些攻击需要一种多层防御措施,既能阻止具有可识别特征的已知攻击,又能防止未知攻击,这些攻击通常会被检测到,因为它们看起来不同于您的网站的正常流量,并且网络服务。

已知网络攻击

您的网站的第一道防线是防御已知存在的大量攻击,并已由 Web 安全专家观察和分析。针对基于 HTML 的网站的常见攻击类型包括:

  • 缓冲区溢出攻击。向 Web 服务器发送极长的 URL、极长的 cookie 或其他极长的信息,以期导致服务器或底层操作系统挂起、崩溃或为攻击者提供对底层操作系统的访问权限。缓冲区溢出攻击可用于访问未经授权的信息、破坏 Web 服务器或两者兼容。
  • Cookie 安全攻击。将修改后的 cookie 发送到 Web 服务器,通常希望通过使用伪造的凭据获取对未经授权的内容的访问权限。
  • 强制浏览。直接访问网站上的 URL,而无需通过主页上的超链接或网站上的其他常见起始 URL 导航到 URL。强制浏览的个别实例可能只是表示用户在您的网站上为页面添加了书签,但反复尝试访问不存在的内容或用户永远不应直接访问的内容,这往往是对网站安全的攻击。强制浏览通常用于访问未经授权的信息,但也可以与缓冲区溢出攻击相结合,以试图破坏您的服务器。
  • Web 表单安全攻击。以 Web 表单向您的网站发送不适当的内容。不适当的内容可能包括修改后的隐藏字段、仅用于字母数字数据的字段中的 HTML 或代码、仅接受短字符串的字段中的字符串过长的字符串、仅接受整数的字段中的字母数字字符串以及您的网站不接受的各种其他数据期望在该 Web 表单中接收。Web 表单安全攻击可用于从您的网站获取未经授权的信息,或彻底损害网站,通常与缓冲区溢出攻击相结合。

对 Web 表单安全性的两种特殊类型的攻击值得特别提及:

  • SQL 注入攻击。以 Web 表单或 URL 的一部分发送一个或多个活动 SQL 命令,目的是使 SQL 数据库执行这些命令。SQL 注入攻击通常用于获取未经授权的信息。
  • 跨站点脚本攻击。在网页上使用 URL 或脚本冲突同源策略,该策略禁止任何脚本从其他网站获取属性或修改任何内容。由于脚本可以获取信息和修改您网站上的文件,因此允许脚本访问不同网站上的内容可以为攻击者提供获取未经授权的信息、破坏 Web 服务器的手段。

针对基于 XML 的 Web 服务的攻击通常属于以下两类中的至少一类:尝试向 Web 服务发送不适当的内容,或尝试破坏 Web 服务的安全性。针对基于 XML 的 Web 服务的常见攻击类型包括:

  • 恶意代码或对象。XML 请求包含代码或对象,这些代码或对象可以直接获取敏感信息,或者可以授予攻击者对 Web 服务或底层服务器的控制权。
  • 格式不良的 XML 请求。不符合 W3C XML 规范的 XML 请求,因此可能会在不安全的 Web 服务上冲突安全性
  • 拒绝服务 (DoS) 攻击。重复发送的 XML 请求,目的是压倒目标 Web 服务并拒绝合法用户访问 Web 服务。

除了基于 XML 的标准攻击外,XML Web 服务和 Web 2.0 站点也容易受到 SQL 注入和跨站点脚本攻击,如下所述:

  • SQL 注入攻击。在基于 XML 的请求中发送一个或多个活动 SQL 命令,目的是使 SQL 数据库执行该命令。与 HTML SQL 注入攻击一样,XML SQL 注入攻击通常用于获取未经授权的信息。
  • 跨站点脚本攻击。使用基于 XML 的应用程序中包含的脚本冲突同源策略,该策略不允许任何脚本从其他应用程序获取属性或修改任何内容。由于脚本可以通过使用 XML 应用程序获取信息和修改文件,因此允许脚本访问属于不同应用程序的内容可以为攻击者提供获取未经授权的信息、损害应用程序或同时兼顾

通常可以通过筛选 Web 站点流量的特定特征(特征)来阻止已知 Web 攻击,这些特征(特征)始终出现在特定攻击中,并且不应出现在合法流量中。这种方法的优点是,所需资源相对较少,误报的风险也相对较小。因此,它是对抗网站和 Web 服务攻击的宝贵工具,并且配置拦截大多数已知 Web 攻击的基本签名保护非常容易。

未知网络攻击

对网站和应用程序的最大威胁不是来自已知的攻击,而是来自未知的攻击。大多数未知攻击分为两类:安全公司尚未开发有效防御措施的新发起的攻击(零日攻击),以及针对特定网站或 Web 服务而不是针对许多网站或 Web 服务的精心攻击(矛攻击)。这些攻击与已知的攻击一样,通常旨在获取敏感的私人信息、损害网站或网络服务并允许其用于进一步的攻击,或这两个目标。

零日攻击是对所有用户的主要威胁。这些攻击通常与已知攻击的类型相同;零日攻击通常涉及注入 SQL、跨站点脚本、跨站点请求伪造或与已知攻击类似的其他类型的攻击。在大多数情况下,它们针对目标软件、网站或 Web 服务的开发人员不知道或刚刚了解的漏洞。因此,安全公司通常没有开发针对这些攻击的防御措施,即使他们有,用户通常也没有获得和安装补丁或执行必要的解决方法来防止这些攻击。从发现零日攻击到防御可用性(漏洞窗口)之间的时间正在缩短,但肇事者仍然可以指望数小时甚至数天,在这些时间里,许多网站和 Web 服务缺乏任何针对攻击的具体保护。

矛攻击是一个主要威胁,但对于更多选择的用户群体来说。一种常见的矛攻击,即矛打击,通常针对特定银行或金融机构的客户,或(较少)针对特定公司或组织的雇员。与其他网络钓鱼不同,它们通常是粗糙的书写伪造,用户熟悉该银行或金融机构的实际通信可以识别出来,矛钓鱼是完美的字母,非常有说服力。它们可以包含个人特有的信息,首先看起来没有陌生人应该知道或能够获得这些信息。因此,矛钓鱼者能够说服他或她的目标提供所要求的信息,然后钓鱼者可以利用这些信息掠夺账户,处理从其他来源非法获得的资金,或获得其他更为敏感的信息。

这两种类型的攻击都具有通常可以检测到的某些特征,虽然不能通过使用寻找特定特征的静态模式,就像标准签名一样。检测这些类型的攻击需要更复杂和更多资源密集型的方法,例如启发式过滤和正面安全模型系统。启发式过滤看起来不是针对特定模式,而是针对行为模式。正安全模型系统对其所保护的网站或 Web 服务的正常行为进行建模,然后阻止不适合正常使用模型的连接。基于 URL 和基于 Web 表单的安全检查分析您网站的正常使用情况,然后控制用户如何与您的网站进行交互,同时使用启发式和正面安全性来阻止异常或意外流量。正确设计和部署的启发式和正面安全性都可以捕获签名错过的大多数攻击。但是,它们需要的资源比签名要多得多,您必须花一些时间正确配置它们以避免误报。因此,它们通常被用作主要防线,而不是用作签名的备份或其他资源密集程度较低的方法。

通过配置这些高级保护以及签名,您可以创建混合安全模型,使 Web App Firewall 能够针对已知和未知攻击提供全面保护。

Web 应用程序安全性