不使用 Web 应用程序防火墙的潜在风险是什么?

What are the potential risks of not using a Web Application Firewall?

我在 Wordpress 上开发和管理一个小型 promotional/marketing 网站,用于启动 SaaS 产品。我们将 Cloudflare 用于 DNS 等等。显然 WAF 已打开,它使用代理并更改用户的 IP 地址。我正在尝试使用 IP 地址为 Google 分析过滤 "internal" 流量,唯一可行的方法是关闭 WAF。如果不使用 WAF 会对我的网站造成任何形式的重大风险,那么显然我需要另一种方法来进行分析。在他们的网站上阅读它提供的所有内容并不能使我清楚它对于这样的网站的重要性。如果 "gets it" 的任何人有一些见解可以分享,我将不胜感激。谢谢!

您绝对应该使用 WAF - 它会保护您的网站免受许多恶意机器人程序和攻击。

Wordpress 站点是攻击者特别多汁的目标,原因有很多:

  1. 默认 Wordpress 安装的安全性不是很好。

  2. 每个 Wordpress 站点都有共同的默认功能,例如管理员登录页面的位置、管理员用户名和其他可利用资源。

  3. Wordpress 非常流行,目前估计有三分之一的互联网网站在使用它。

  4. 许多小企业和爱好者都在使用 Wordpress,他们不知道如何正确保护他们的网站。

因此,攻击者可以很容易地在 web 上搜索易于破解的 Wordpress 网站。其他恶意活动通常在大多数 Wordpress 网站上很容易进行,例如评论垃圾邮件或 Denial of Service 攻击。


WAF 提供什么保护?

Cloudflare 和大多数其他高质量 WAF 可以配置为通过自动执行以下操作来保护您的站点:

  • 阻止已知的错误 IP 地址。
  • 阻止自动向您的网站发出请求的恶意机器人。
  • 在短时间内限制来自一个来源的大量请求(通常是 DoS 攻击或 scraping 的迹象)。
  • 阻止来自特定国家或地区的请求。

如果您可以使用此保护,您没有理由不想启用它,而且 Cloudflare 是该领域的行业领导者。

此外,我建议您研究如何通过 WAF 以外的方式更好地保护您的 Wordpress 站点 - 例如The Ultimate WordPress Security Guide


如何解决IP地址问题

Cloudflare 不会更改用户(客户端)的 IP 地址,而是充当代理。正如您所注意到的,您看到的 IP 地址不是客户端自己的,而是 Cloudflare 的一个。这对于 Cloudflare 如何保护您的站点至关重要,但这是使用任何类型的代理时的常见问题。

要在使用代理时获得正确的 IP 地址,您需要检查 X-FORWARDED-FOR header。您可能会将其视为一串 comma-separated 个 IP 地址,具体取决于用户在到达该站点之前经过了多少代理。列表中的第一个是原始客户端IP。

例如这里203.0.113.1是客户端的原始IP地址:

X-Forwarded-For: 203.0.113.1,198.51.100.101,198.51.100.102

文档:How does Cloudflare handle HTTP Request headers?

无论如何,最好使用一个可以全面检查 headers 并为您提供原始客户端 IP 的最佳匹配的功能,无论用户是否在代理后面,这样您可以保证一直有效

这是一个非常流行的 Whosebug 问题:

What is the most accurate way to retrieve a user's correct IP address in PHP?