反向代理如何增强网络应用程序的安全性

代理, Dec-01-20215 分钟阅读

当今时代,企业越来越多地使用网络应用程序,这已不是什么秘密。网络应用程序为简化企业运营、提高效率提供了便利,从而节省了原本需要人工完成的任务的开支。尽管网络应用程序越来越受欢迎,但它们也容易面临风险和网络攻击。本文将介绍

当今时代,企业越来越多地使用网络应用程序,这已不是什么秘密。网络应用程序为简化企业运营、提高效率提供了便利,从而为原本需要人工完成的任务节省了开支。

尽管网络应用程序越来越受欢迎,但它们也容易遭受风险和网络攻击。本文将深入介绍网络应用程序容易受到的重大攻击。然后,您将发现如何使用反向代理将威胁降至最低。

不过,在深入探讨安全问题之前,我们先来看看典型网络应用程序的架构。

网络应用程序架构概述

网络应用

在大多数情况下,网络应用程序由网络服务器和网页组成。网络服务器接受来自客户端(网络浏览器)的请求,然后由网络服务器进行处理并将响应返回给客户端。  

服务器端使用 PHP、Python、ASP.NET 等动态编程语言进行编码,客户端则使用 HTML、CSS 和 JavaScript 进行编码。

有关网络应用程序结构的更多信息,请参阅本文。下图显示了典型的客户机-服务器通信。

在上图中,所有通信似乎都很简单,请求在客户端和服务器之间来回传送。然而,情况并非总是如此。

遗憾的是,采用上述设计的网络应用程序在客户端和服务器之间会受到外部网络攻击。

在深入了解这些攻击的本质之前,让我们先来看看一些最令人兴奋的网络攻击统计数据。

网络应用程序面临哪些重大威胁?

令人振奋的网络攻击统计数据

根据 Positive Technologies 2018 年的网络应用漏洞数据,金融和银行业占所有受攻击网络应用的 28%。该数据还显示,14%的网络攻击针对电信和制造业的在线应用程序,11%针对交通运输业的应用程序。

其他面临风险的行业包括政府机构(11%)、IT、电子商务和大众传媒。

就攻击类型而言, F5 的另一份报告指出,跨站脚本攻击(从 4% 上升到 54%)和 SQL 注入(SQLi)攻击(从 15% 上升到 76%)正在上升。 

我们可以从这些统计数据中得出结论,需要采取一些严格的措施来保护网络应用程序免受漏洞的侵害。一些安全漏洞是由于编码问题造成的,而其他原因则可能是由于网络应用程序使用的基础设施不足。这就是网络应用程序防火墙(WAF)的作用所在,它可以通过过滤数据包、阻止 HTTP 流量和未经授权的日志记录来最大限度地减少漏洞。 

我们将在下文进一步探讨。在此之前,先简要介绍一下重大安全威胁。

SQL 注入(SQLi)

SQLi -SQL 注入是一种网络安全漏洞,可让攻击者操纵应用程序对数据库进行的 SQL 查询。这样,攻击者就能获取任何人都无法轻易获取的潜在有价值信息。 

一个最简单、最熟悉的例子就是利用未经消毒的用户输入为黑客谋利。假设有一个文本框要求输入用户 ID。然后根据用户 ID,查询检索属于该用户的所有信息。

因此,假设用户在文本框中输入了以下内容:


用户 ID:228 或 1=1

那么查询结果如下:

SELECT * FROM Users WHERE UserId = 228 OR 1=1;

然后,它会检索用户表中的所有数据,包括密码(如果表中包含密码数据)。

有关 SQLi 的更多信息,请参阅此处

跨站脚本 (XSS)

当用户通过未经审核的输入字段注入主要使用 javascript 编写的恶意脚本时,就会发生 XSS。通常,攻击者会将恶意脚本发送给不会被怀疑的用户。最终用户的浏览器并不知道该脚本是有害的,并会执行该脚本。 

因此,这种恶意脚本可以访问与 cookie、会话令牌或任何其他敏感信息相关的所有数据。此外,这些脚本还可以重写网页的 HTML。

认证和会话管理失灵

假设用户必须使用登录凭证登录网络应用程序。在这种情况下,网站的专有算法会为用户与网络服务器之间的整个会话通信生成一个唯一的会话 ID。

如果网络开发人员没有对用户和网络服务器之间来回传输的安全数据进行加密,入侵者就很有可能窃取这些数据并冒充用户。这种情况主要发生在使用咖啡店的公共 WiFi 登录互联网时。

更多详情,请参阅本文

防止网络攻击的方法有哪些?

网络应用防火墙

WAF 是 OSI 模型中的第 7 层防御,可置于目标服务器的入口点,如下图所示。它保护服务器内部网络免受攻击,并隐藏服务器的网络拓扑结构。

为了让 WAF 正常工作,您需要在服务器中进行额外配置。与防火墙一样,WAF 也会过滤传入和传出的 HTTP 流量,如果这些流量不符合 WAF 上设置的规则,就会对服务器的内部网络造成危害。

WAF 也是一种反向代理,我们将在下一节讨论。

反向代理

代理服务器的工作就是隐藏你的 IP 地址,并用代理服务器的 IP 地址取而代之。反向代理也有同样的功能,它可以隐藏网络服务器以及服务器内部网络拓扑结构,从而增强网络服务器的安全性。

客户端只知道代理服务器的地址,因此实际服务器对客户端是隐藏的。

理想情况下,您可以将反向代理用作上文讨论过的网络应用程序防火墙(WAF)。您可以在配置了反向代理的设备上对网络应用程序实施 WAF。因此,WAF 在增强安全性方面的应用范围变得更加广泛。攻击者也无法看到网络服务器的实际位置。

有关反向代理更多基本信息,请参阅 本文。在下一节中,我们将探讨如何使用反向代理来降低应用程序风险。不过,在此之前,我们先来了解一下反向代理的作用。

反向代理如何工作?

所有反向代理都执行以下所有基本操作:

  1. 客户端浏览器向一个公共 URL 发送 HTTP 请求。假设该 URL 是 www.host.com,端口为 80。
  2. 然后,像往常一样,主机名会在反向代理服务器上解析。该反向代理服务器监听该地址并接收请求。
  3. 之后,反向代理会对 URL 进行调查,以确定它需要在哪里代理请求。通常,反向代理可以使用任何 URL 组件来决定请求的路由。例如,它可以使用主机、协议、路径、端口或查询字符串。通常,路径是决定路由的主要组成部分。
    1. 反向代理配置设置决定了发送请求的出站 URL。出站 URL 通常是负责提供内容的后端服务器。反向代理服务器可能会重写请求的部分内容。例如,它可能会更改或添加路由段。
    2. 下一步是修改请求标头;除了重新映射 URL 外,反向代理还必须更新一些 HTTP 标头信息,以显示内部网络服务器。例如,"Host: "头包含请求 URL 的主机名。
    3. 因此,在完成 URL 映射后,http://www.host.com 可以重新映射为 http://realhost.com:8080.As,在这种情况下,您可以看到主机名变为 realhost。然后端口号也变为 8080。

  1. 最后,反向代理将请求发送到实际服务器,由服务器进行处理。
  2. 服务器处理请求后,会将响应发送给反向代理。
  3. 然后,反向代理执行以下操作:
    1. 它会修改响应,以便正确发送到客户端。这包括包含文件服务器位置的 "Location: "字段。
    2. 反向代理重新映射标头,最后将响应发送给客户端。

如何使用反向代理保护网络应用程序的安全

由于我们的目标是克服前面提到的网络攻击,因此除了上述步骤外,反向代理还需要执行其他功能。

验证请求内容

当客户端向服务器发送请求时,反向代理会将输入内容与其签名数据库进行比较,从而对输入内容进行消毒。程序员使用高度先进的正则表达式开发这些签名。反向代理将完全根据拦截列表过滤和白名单过滤方法来决定是否允许用户输入的请求。

黑名单过滤法

黑名单过滤器存储已知的有害请求。然后,它会将每个请求与列表中的条目进行比较。如果发现匹配,就会拒绝该请求。同一攻击的不同变体必须分别记录在列表中。黑名单的全面性有助于提高其效率。 

白名单过滤法

白名单过滤器可捕获特定网站的全部有效请求。因此,白名单只允许已知请求到达服务器,从而防止攻击。另一方面,构建白名单的过程非常耗时,而且需要了解用户可能向服务器发送的全部合法请求。 

此外,如果发生 SQL 注入,要向成千上万的数据库供应商创建所有有效请求,可能会让人难以承受。

对安全网络应用程序的任何修改都需要更新白名单。因此,保留白名单会增加管理负担。 

验证回复内容

在将服务器的响应发送回客户端之前,反向代理会对其进行验证。通常使用黑名单来实现这一目的。黑名单过滤器可以隐藏已知的响应,不让不需要查看这些响应的客户端看到。错误信息就是这类数据的一个例子;反向代理可以用不包含敏感数据的通用错误信息来代替错误信息。

记录请求和响应

反向代理还可以记录请求,以便后续检查。最好的办法是只为反向代理最初阻止的请求配置日志记录。在安装的最初阶段,应仔细检查日志。这对于确认反向代理没有阻止任何真正的请求至关重要。

结论

在本文中,我们希望您了解网络应用程序中的漏洞,以及如何使用反向代理来解决这些威胁。事实上,反向代理并不能消除与网络应用程序相关的所有可能漏洞。

不过,这将是一个很好的策略,可以减轻网络应用程序中遇到的大多数威胁。最后,我们希望您在网络应用程序中遇到安全问题时,能应用本文所学的概念。