COS WP Woo
返回博客
安全

WooCommerce 商店保护:WAF、2FA、地理封锁和监控

WooCommerce 商店存储支付数据、客户个人数据和管理访问权限。我们分析复杂的保护:WAF、双因素身份验证、地理封锁、文件完整性监控和活动日志。

上周,我收到了一位客户发来的电子邮件,该客户在 WooCommerce 上拥有一家工业油在线商店。话题很简洁:“我们被黑客攻击了。”打了半个小时的电话后,我得知这个故事平庸得让人咬牙切齿。有人猜出了经理帐户的密码,进入管理区域,导出客户数据库 - 姓名、电话号码、送货地址、订单历史记录 - 然后就消失了。两天来没有人注意到这次入侵。管理员使用的密码是“company2024”,没有双因素身份验证,标准的wp-login.php挂在整个互联网的众目睽睽之下,唯一的“保护”是Wordfence,三个月前由于许可证过期而停止更新。这是熟悉的画面吗?在过去的五年里,我已经看到这种情况发生了几十次,每次我都会有同样的感觉——一种挫败感和知道这种情况本来可以避免的感觉。

事情是这样的 - 当我们推出 WooCommerce 商店时,每个人都会考虑设计、产品目录、付款方式、设置交付和 SEO。安全性始终是排在列表底部的一项。 “我们稍后会设置,”“这与我们无关,我们只是一家小商店,”“谁需要我们。”然后事实证明它们是需要的。因为 WooCommerce 不仅仅是一个 WordPress 博客,您最多可以破坏文章。这些是付款数据、客户的个人数据、管理面板的访问权限,您可以在其中执行价值数十万卢布的操作。他们并不是专门攻击您 - 他们正在连续攻击每个人,使用自动化脚本,这些脚本与您是否销售工业润滑剂或设计师蜡烛完全无关。

我多年来一直为 B2B 和工业公司进行开发和营销,在那段时间里,我已经看到了足够多的黑客后果,从而明白了一件事:WooCommerce 商店安全不是一种选择,而是一种基础。没有它,其他一切——漂亮的网站、简化的销售渠道、定制的 CRM——都会立即崩溃。这就是为什么,当我们为 COS WP Woo 设计安全模块时,我们不是将其视为“另一个功能”,而是将其视为一个应涵盖 WooCommerce 所有主要攻击向量的系统。今天我想告诉您这个系统是如何工作的 - 不是抽象的,而是通过具体的示例并解释为什么需要每个级别的保护。

为什么 WooCommerce 商店是一个不错的目标

让我们首先弄清楚为什么 WooCommerce 商店经常遭到黑客攻击。有几个原因,而且它们都是同时起作用的。 WordPress 是世界上最受欢迎的 CMS,为超过 40% 的网站提供支持。 WooCommerce 是最受欢迎的电子商务插件,可将 WordPress 转变为成熟的在线商店。这意味着立即发现的任何漏洞都适用于数百万个站点。黑客并不是在您的特定商店中寻找漏洞 - 他们在 WordPress 版本 6.4.2 或 Contact Form 7 插件版本 5.8 中发现漏洞,然后自动脚本抓取数十万个网站并尝试利用此漏洞。你最终会在溜冰场下面。没有个人仇恨。

但还有另一面。与常规博客不同,WooCommerce 存储提供真正价值的数据。一般商店的 wp_postmeta 表包含数百兆字节的信息,包括送货地址、电话号码、电子邮件地址,有时甚至是部分卡数据。 wp_users 表包含密码哈希值,如果其中一位管理员在多个服务上使用相同的密码,则考虑整个链受到威胁。我曾与一家商店合作,其中 wp_postmeta 表重达近 1 GB - 近 17,000 种产品,七年来数以万计的订单。此类数据库的泄露不仅会造成滋扰,还可能根据 152-FZ 处以罚款,并且可能对小型企业造成无法恢复的声誉打击。

我还注意到以下几点:在线商店所有者之间存在一个常见的误解,即如果他们配置了 SSL 证书并安装了某种安全插件,那么他们就会受到保护。 SSL 是对浏览器和服务器之间连接的加密,这是一件很棒的事情,但它不能防止 SQL 注入、密码猜测或其他人插件中的恶意脚本。而“某种安全插件”往往是 Wordfence 或 iThemes Security 的免费版本,两年前安装,此后从未打开过。真正的保护不是一个工具,而是一套在不同层面发挥作用的措施。我想经历每个级别。

将您的 WooCommerce 商店视为一座建筑物。 SSL 是领土周围的栅栏。但在围栏内部,您需要视频监控系统(监控)、入口处检查文件的保安人员(身份验证)、门锁(访问限制)、运动探测器(防火墙),甚至是有人开始撬墙的警告系统(文件完整性监控)。删除任何元素,整个系统就会变得脆弱。这正是我们设计安全模块的方式:不是一个大交换机,而是分层防御。

WAF 是在问题发生之前发挥作用的第一道防线

我想了很长时间不知道从哪里开始谈论具体的工具,最终决定从WAF——Web应用防火墙开始。因为正是这个组件在请求到达您的 PHP 代码之前就切断了 80% 的垃圾流量。本质上,WAF 是一个过滤器,它分析每个传入的 HTTP 请求并将其与一组规则进行比较。如果请求看起来像是 SQL 注入尝试,则阻止它。如果URL中包含../../../etc/passwd这样的结构,则这是路径遍历,阻止它。如果请求参数中有JavaScript代码,则属于XSS攻击,请拦截。

听起来很简单,但实施的关键在于细节。我记得在一个项目中,我们在服务器上安装了 ModSecurity,它立即开始阻止来自 WooCommerce 的合法请求。由于 WooCommerce 在下订单时发送此类表单,因此具有 OWASP CRS 规则的 ModSecurity 开始怀疑每隔一个 POST 请求中的 SQL 注入。结果就是客户下不了单,转化率降为零,我们花了两天时间调整规则。这就是为什么在应用程序级别工作并了解 WordPress 和 WooCommerce 上下文的 WAF 与服务器级别的 WAF 不同。

在我们的模块中,WAF 作为中间件,在很早的阶段(甚至在 WordPress 开始处理路由之前)拦截请求。它检查 GET 参数、POST 正文、cookie、标头 - 来自客户端的所有内容。他知道 WooCommerce 是什么。他了解到,带有 billing_address_1 字段的结帐 POST 请求是正常的,但带有参数 ?id=1 UNION SELECT * FROM wp_users 的 GET 请求是不正常的。这是与通用解决方案的一个重要区别:我们的 WAF 是为 WordPress 和 WooCommerce 设计的,因此误报的数量很少。

老实说,当我在或多或少访问过的 WooCommerce 商店工作第一周后查看 WAF 日志时,我每次都会睁大眼睛。数以万计的被阻止的请求。 SQL 注入、目录遍历尝试、XSS 探测、扫描流行插件中的已知漏洞 - 这种情况 24/7 发生,没有休息或周末。在我们的一个客户项目中,WAF 在第一个月就阻止了 47,000 个恶意请求。四万七千。店主在安装我们的模块之前,确信没有人会攻击他的“没有人需要的网站”。

但 WAF 是第一行。它可以阻止大规模的自动攻击。 WAF 无法帮助防止使用被盗凭证进行有针对性的黑客攻击。这需要其他工具。

自定义登录 URL 和 XML-RPC 阻止:从可见位置删除目标

如果我们从另一个角度看问题呢?您可以简单地移除被射击的物体,而不是建造墙壁。任何查看过 WordPress 站点访问日志的人都会看到对 /wp-login.php 和 /xmlrpc.php 的无尽请求。这是机器人熟记的两个地址。它们是用每个暴力脚本、每个自动扫描仪编写的。删除这些地址,90% 的自动攻击只会遇到 404 错误,然后寻找下一个受害者。

登录页面的自定义 URL 是我曾经认为的“通过默默无闻实现安全”的想法,并且有点势利地不屑一顾。就像,真正的安全应该基于强密码和正确的身份验证,而不是基于我们隐藏门。但实践证明我错了。不,当然,自定义 URL 并不能替代强密码和双因素密码。但这是一种非常有效的方法,可以减少机器人负载并从日志中删除 99% 的自动垃圾。当我们将 /wp-login.php 更改为销售网站之一上的自定义 URL 时,每天的登录尝试次数从 3,000 次下降到 12 次。十二!这些人都是知道地址的真实人士——商店管理员和经理。其他三千个都是机器人,愚蠢地敲击着标准地址。

在我们的模块中,这是通过 LoginUrl 组件实现的。您指定任意地址 - 至少 /my-secret-door、至少 /academic、至少 /login-1234。标准 /wp-login.php 和 /wp-admin(对于未登录的用户)停止工作,返回 404。机器人来到 /wp-login.php,收到“找不到页面”,记下“这里没有 WordPress”并离开。优雅高效。

现在介绍 XML-RPC。这是 WordPress 从其之前的引擎 b2/cafelog 继承的古老协议。它允许您通过 XML 请求远程管理您的站点。这曾经对于移动应用程序和前端编辑器很有用,但随着 REST API 的出现,对 XML-RPC 的需求几乎消失了。但攻击者却喜欢 XML-RPC。为什么?因为 system.multicall 方法允许您在单个 HTTP 请求中发送数百次身份验证尝试。也就是说,攻击者不是向 wp-login.php 发出 500 个请求(这很容易被注意到并阻止),而是向 xmlrpc.php 发出一个请求,其中包含 500 个登录密码组合。一些暴力保护插件甚至没有注意到这个向量,因为它们只通过标准形式计算登录尝试。

我们只需完全关闭 xmlrpc.php。设置中的一个开关和协议被阻止。没有 XML-RPC,没有多重调用。如果您需要从外部应用程序进行访问,可以使用具有正常身份验证和速率限制的 REST API。我还没有看到 2025-2026 年有任何需要 XML-RPC 的实际业务场景。但我遇到过足够多的网站被突破的场景。

这里值得做出一个重要的澄清。有些人会说,“嗯,Jetpack 使用 XML-RPC 与 WordPress.com 进行通信。”是的,他确实如此。但如果您切换到我们的安全模块,您就不再需要 Jetpack 来实现这些目的。此外,Jetpack 很早以前就开始迁移到 REST API。简而言之,关闭 XML-RPC 并且不要回头。

双因素身份验证和暴力保护:两把锁比一把锁好

让我们来谈谈身份验证 - 这是所有 WooCommerce 商店中看似最简单但同时也是最容易受到攻击的点。我可以安装最强大的WAF,关闭XML-RPC,隐藏登录URL,但如果站点管理员使用密码“admin123”,我所有的防御都会像纸牌屋一样崩溃。并且不要认为我夸大其词。根据我在实际项目中看到的统计数据,大约每四个 WooCommerce 商店都至少有一个具有管理权限的用户和一个不包含特殊字符的十个字符的密码。这不是疏忽——这是现实,销售经理必须记住二十个系统的密码,并选择更容易记住的密码。

双因素身份验证从根本上解决了这个问题。即使攻击者发现了密码(窃取、拾取、拦截、在泄露的数据库中找到),如果没有第二个因素,他也将无法登录。在我们的模块中,我们实现了 TOTP - 基于时间的一次性密码,与 Google Authenticator、Microsoft Authenticator 和数十种其他应用程序使用的标准相同。管理员扫描二维码,应用程序开始生成每 30 秒更改一次的六位数代码。登录时,您需要输入应用程序中的登录名、密码和当前代码。三个因素?不,两个 - 密码是“你知道什么”,应用程序的代码是“你有什么”(带有应用程序的手机)。经典的双因素。

我坚持要求所有商店管理员和经理至少必须强制执行 2FA。可选 - 对于所有用户。你知道我最常听到什么争论吗? “这对员工来说很不方便,他们会抱怨。”我总是回答同样的问题:你知道什么不方便吗?打电话给客户并解释说他们的个人数据被泄露是因为销售部门的 Masha 认为“qwerty”是一个相当强的密码。一次性代码使登录过程增加了三秒。三秒防止数千个客户端的潜在数据泄露。在我看来,选择是显而易见的。

但 2FA 是第二个锁。第一个怎么样?这就是暴力保护发挥作用的地方。我们的 LoginProtection 模块的工作原理是渐进式阻止。前三次不成功的登录尝试是一个警告。第五次之后,IP 被封锁 15 分钟。第十个小时之后——一个小时。第二十号之后 - 一天。此外,不仅可以通过IP进行阻止,还可以通过用户名进行阻止。这很重要,因为攻击者有时会使用具有数千个 IP 地址的分布式僵尸网络,但目标是单个帐户 - “admin”或“manager”。如果用户名“admin”从不同的 IP 尝试 20 次失败,我们会在一段时间内阻止该用户名的登录,无论 IP 为何。

在这里,我想讲一个故事,它完美地说明了为什么需要同时使用所有这些机制。我们的客户之一是一家拥有 WooCommerce 商店的液压设备制造商。他有三名经理为他工作,每人都有自己的账户。一名经理辞职了,但没有人封锁她的账户。两个月后,该帐户的密码在另一项服务的公开数据泄露中浮出水面(经理使用了相同的密码)。机器人找到了这个密码,在 wp-login.php 上尝试了它并输入了。如果我们的模块已安装,自定义登录 URL 将意味着机器人根本无法找到登录页面。如果我奇迹般地找到了它,那么 2FA 将需要来自机器人没有的应用程序的代码。如果没有 2FA,活动监控将在凌晨 3 点显示来自陌生 IP 的条目,管理员将收到通知。三道防线,每道防线都可以单独阻止事件的发生。这三者加在一起使得黑客攻击几乎不可能。

我还想谈谈验证码。我们支持 Google reCAPTCHA v2、reCAPTCHA v3 和 hCaptcha - 您的选择。可以在登录表单、注册表单、结账页面、密码恢复表单上启用验证码。 reCAPTCHA v3 的工作原理是隐形的 - 用户不会注意到任何事情,而 Google 根据行为分析来决定它是机器人还是人。对于大多数商店,我推荐 v3 - 它不会激怒顾客,同时有效地切断机器人。在管理员登录表单上,您可以使用经典的“我不是机器人”复选框检查 v2,这里用户体验不太重要,但保护更严格。

地理封锁:过滤流量的外科手术方法

你知道,我长期以来一直对地理封锁持怀疑态度。看来封锁整个国家这个手段太粗暴了,就像“用锤子打蚊子”一样。但后来我开始分析客户端站点上的攻击日志并改变了主意。不是 180 度 - 更像是 120 度。地理封锁不是万能药,但对于某些场景来说,它是一个令人惊讶的有效工具。

以下是其中一个项目的具体数字。一个月内,WAF拦截了约5万个恶意请求。我按照地理位置来划分它们。 38% 来自不属于该商店目标市场的东南亚国家。 22%来自南美洲,也是路过的。 15%来自非洲。 12% 来自东欧(但不包括俄罗斯或独联体国家)。总计:87% 的恶意流量来自商店没有任何真实客户的地区。零订单、零注册、零请求。纯攻击流量。

地理封锁允许您阻止来自选定国家/地区的 IP 地址访问网站(或其某些部分 - 例如,仅限 wp-admin 和 REST API)。这不是 WAF 的替代品 - 它是一个补充。 WAF 分析请求的内容,按来源进行地理封锁过滤器。它们共同创建了一个双重过滤器:首先,来自非目标区域的流量被切断,剩下的流量由 WAF 检查是否存在恶意。

但我想说实话:地理封锁并不适合所有人。如果您的商店销往全球,则屏蔽国家/地区是个坏主意。如果您在巴西或印度有客户,则无法屏蔽这些地区。地理封锁对于具有明确地理市场的商店来说是理想的选择。一家只在俄罗斯和独联体国家销售的俄罗斯 B2B 商店?您可以安全地阻止来自订单肯定不会来自但攻击肯定会来自的国家/地区的访问。一家适用于俄罗斯和欧盟的商店?关闭那些您不使用的区域。每个被阻止的区域都意味着数千个根本无法到达您的服务器的恶意请求。这样既安全又节省服务器资源。

在我们的模块中,地理阻止是通过一个方便的界面进行配置的 - 选择国家/地区,指示要阻止的内容(整个网站或仅管理区域),然后将其打开。 GeoIP 数据库会自动更新。您可以为特定 IP 设置白名单,无论哪个国家/地区都不应阻止这些 IP - 如果您有来自被阻止区域的远程开发人员,这非常有用。

还有一点值得强调。应用程序级别的地理封锁(我们的插件)的工作方式与 CDN (Cloudflare) 或服务器级别 (CSF/iptables) 的地理封锁略有不同。在应用程序层面,请求已经到达PHP,我们正在处理它。这意味着服务器上的负载最小,但请求仍在处理。如果您有 Cloudflare,最好在此处和此处启用地理封锁。 Cloudflare 会在流量到达服务器之前切断流量,我们的模块将捕获通过 Cloudflare 漏掉的内容(例如,绕过 CDN 直接发送到服务器 IP 的请求)。纵深防御——还记得吗?

IP管理:黑白名单、按模式自动屏蔽

IP 管理是一种乍一看似乎很原始的工具。黑名单、白名单——有什么复杂的?但如果使用得当,它就会成为一种强大的战术工具。我将告诉您我们如何使用它以及为什么它与其他措施结合使用很重要。

白名单是神圣的领域。在任何情况下都不会被阻止的 IP 地址。这包括您的办公室地址、家庭 IP 管理员、可信服务(支付系统、1C、API 合作伙伴)的 IP 地址。我看到一种情况,监控服务开始发送 WAF 解释为漏洞扫描的请求并阻止它们。结果监控显示该网站瘫痪了,尽管它运行得很好。白名单可以解决此类问题。

黑名单是硬块。黑名单上的地址将被立即拒绝,不做任何处理。黑名单可以方便地手动阻止您在日志中检测到的特定攻击源。如果我们发现某个特定 IP 存在可疑活动,我们会将其添加到黑名单中,稍后我们会找出答案。

但最有趣的是基于模式的自动阻塞。如果从该地址检测到某种行为模式,我们的模块可以自动将 IP 发送到黑名单:短时间内出现太多 404 错误(扫描的迹象)、太多登录尝试、尝试访问不存在的 PHP 文件、访问典型后门(wp-config.php.bak、.env、debug.log)。这与 WAF 和 LoginProtection 结合使用,创建一个自动响应系统:检测到可疑活动 - 阻止、记录、通知管理员。

你知道我喜欢这种方法的什么吗?他是自学的。不是机器学习意义上的,而是每次攻击都会使系统变得更强大。每个被阻止的 IP 都会添加到数据库中,每种攻击模式都会细化规则。经过一个月的运行,您的安全模块知道您的站点最常受到攻击的特定 IP 范围,并主动阻止它们。

文件完整性监控:您沉默的守望者

现在我们来谈谈当之前的所有防线都失败时会发生什么。假设攻击者仍然获得了访问权限。也许是通过第三方插件中的漏洞、通过受损的 FTP 托管帐户、通过 WAF 无法识别的 SQL 注入。他做的第一件事是什么?它修改文件。向主题的functions.php添加后门,将PHP shell放置在上传目录中,修改WordPress核心文件以拦截凭据。

文件完整性监控 (FIM) 是一个监控 WordPress 核心、插件和主题文件更改的系统。它获取文件系统的“快照”(每个文件的哈希值),并定期将当前状态与该快照进行比较。如果文件发生更改、新文件出现在不应出现的位置,或者本应出现的文件消失,管理员会收到通知。

我会告诉你真实的故事。在其中一个项目中,我们发现有人更改了 wp-includes/version.php 文件。该文件包含 WordPress 版本号,并且通常在更新之间不会更改。变化很微妙:在文件末尾添加了一行代码,在某些条件下,该代码从外部服务器下载并执行脚本。如果没有完整性监控,这种变化可能几个月都不会被注意到。通过监控,我们在一小时内就收到了通知。

在我们的模块中,完整性监控按计划进行 - 您可以设置每小时、每六个小时或每天一次检查。当检测到更改时,会发送一封电子邮件通知,其中包含已更改文件的列表。管理员可以查看到底发生了什么变化,并确定这是合法的插件更新还是试图引入恶意代码。

重要提示:当您更新 WordPress、插件或主题时,文件自然会发生变化。一个好的 FIM 必须能够区分合法的更改和可疑的更改。我们的模块知道某个版本的标准 WordPress 发行版中包含哪些文件,并且可以将您的文件与参考文件进行比较。如果您服务器上的 wp-login.php 文件与 WordPress 官方版本中提供的文件不同,则需要引起关注。

在这里我想做一个哲学题外话。文件完整性监控不是预防工具。这是一个发现工具。它不会阻止黑客攻击,但它会让你很快知道这一点。在网络安全中,检测速度就是一切。据统计,对于小型企业来说,从黑客攻击到被检测到的平均时间为 197 天。在近七个月的时间里,攻击者可以接管您的网站、窃取数据、使用服务器发送垃圾邮件、植入恶意链接 - 而您甚至不会知道这些。完整性监控将这个窗口缩短到几个小时。

活动日志:正在发生的事情的完整描述

活动日志是一项人们只有在事件发生后才开始了解其价值的功能。当一切正常时,日志似乎是无用的噪音:“用户管理员已登录”,“用户管理员更改了产品#15748”,“用户管理员更新了插件设置”。无聊、无趣,为什么要留着呢?然后发生了一个事件,第一个问题是:“这是谁做的?什么时候做的?你到底改变了什么?”如果没有活动日志,就不可能回答这些问题。

我们的 ActivityLog 模块记录 WordPress 和 WooCommerce 管理面板中的所有重要活动。用户登录和注销(使用 IP 地址和用户代理)。创建、编辑和删除内容 - 帖子、页面、产品、订单。更改设置 - 任何设置,包括插件设置。插件和主题的安装、激活和停用。与用户的操作 - 创建、删除、更改角色。处理媒体文件。还有数十种类型的事件。

我不仅使用活动日志进行事件调查,还用于日常管理。当一个团队有三到四个人有权访问商店管理员时,日志就是您的控制工具。谁改变了该产品的价格?谁删除了该类别?谁安装了这个奇怪的插件?没有日志——指责、误解、冲突。带有日志——事实、日期、时间。没有什么私人的,只是数据。

活动日志也是一个合法的安全网。如果与声称订单在他不知情的情况下被更改的客户发生争议,您可以证明订单是由特定经理在特定时间更改的。反之亦然 - 证明您的员工没有接触过该订单。在个人数据争议日益严重的世界中,这种级别的文档不是奢侈品,而是必需品。

日志存储在带有上下文的单独数据库表中,允许您按用户、操作类型和日期进行过滤。您可以设置自动清理旧记录 - 例如,存储过去 90 天的日志。这对于大多数商店来说已经足够了。如果需要长期存档,可以导出为 CSV。

我发现活动日志与其他安全模块的链接特别有价值。当 WAF 阻止请求时,该请求会记录到日志中。当 LoginProtection 阻止 IP 时,它会进入日志。当 FIM 检测到文件更改时,它会记录到日志中。因此,您可以在一个界面中查看所有安全事件的单一年表。无需在不同插件的十个屏幕之间切换 - 一切都在一个地方。

为什么我们不使用 Wordfence 以及为什么您可能也不应该使用

这就是有趣的部分开始的地方 - 与市场上已有的产品进行比较。 Wordfence 是 WordPress 最受欢迎的安全插件,活跃安装量超过 400 万。他很好,很认真,值得。我自己已经在各种项目中使用它多年了。我积累了一份投诉清单,最终导致我决定开发自己的模块。

首先也是最重要的问题是尺寸和性能。 Wordfence 是一个怪物。免费版本占用约 30 MB 磁盘空间,高级版本占用更多磁盘空间。但磁盘上的大小并没有那么糟糕。 Wordfence 对站点的每个请求都运行自己的防火墙、扫描数据库、检查文件并调用外部 API 来更新签名。在共享主机上,这可能会使页面加载时间增加 200-300 毫秒。在拥有数千种产品和活跃流量的繁忙 WooCommerce 商店中,这一点很明显。

我们的安全模块是 WP Woo 的 COS 的一部分,它的重量......嗯,它是插件的一部分,而不是单独的实体。它不带有自己的 PHP 级防火墙,可以通过 auto_prepend_file 拦截每个请求。它通过标准 WordPress 挂钩工作,这意味着更好的兼容性和可预测性。

第二个问题是缓存冲突。我在其他所有 Wordfence 项目中都遇到过这种情况。 LiteSpeed Cache、WP Super Cache、W3 Total Cache - Wordfence 以令人羡慕的规律性与它们发生冲突。然后它无法扫描文件,因为缓存在 Wordfence 有时间检查页面之前返回了该页面。然后它的防火墙会阻止来自缓存插件的请求。然后,实时流量监控开始将缓存的请求显示为“可疑”。在一个使用 LiteSpeed 的项目中,我们花了两个工作日让 Wordfence 和 LiteSpeed Cache 一起工作而不发生冲突。开发人员两天的工作就是真金白银。

第三个问题是价格。 Wordfence Premium 一个站点每年的费用为 119 美元。如果您有五家商店 - 每年 595 美元。十几年了,光是安全就花了六千块钱。尽管免费版本有很大的局限性:防火墙签名延迟 30 天更新(卡尔,三十天! - 在此期间漏洞将有时间成为每个脚本小子的财产),没有实时 IP 黑名单,扫描有限。也就是说,免费版实际上是一种销售高级版的营销工具。

我们的安全模块没有免费和付费版本。所有功能 - WAF、2FA、地理封锁、FIM、活动日志、CAPTCHA、IP 管理、自定义 URL、XML-RPC 阻止、暴力保护 - 均作为 COS WP Woo 的一部分提供。一个插件,一个许可证,一套完整的工具。您无需单独为安全性、B2B、搜索、与 1C 集成单独付费。全部在一起。

第四个挑战是集成。 Wordfence 是一个独立的插件。他对你的 B2B 模块、你的搜索、你的 CRM 一无所知。我们的安全模块是单一生态系统的一部分。它了解 B2B 用户,并且可以针对不同的客户群实施不同的安全策略。它与电子邮件通知模块集成。它使用通用设置系统和通用管理界面。它不是来自十个不同开发人员的十个不同插件的拼凑而成 - 它是一个单一系统,其中所有组件都设计为协同工作。

我并不是说 Wordfence 是一个糟糕的产品。对于没有 WooCommerce 并且性能并不重要的常规 WordPress 博客,Wordfence Premium 是一个不错的选择。但对于拥有数千种产品、B2B 功能、与 1C 集成和性能要求的 WooCommerce 商店来说,内置安全模块效果更好,因为它是针对这种情况而设计的。

集成方法:所有元素如何协同工作

我特别没有将安全模块的每个组件描述为独立的功能 - 因为它们不能独立工作。整个想法是每个组件都增强其他组件。让我们看一下典型的攻击场景,看看系统在每个阶段的反应。

来自越南的机器人正在尝试访问该网站。地理封锁检查 IP - 越南不在允许的国家/地区列表中。该请求被阻止。该事件记录在活动日志中。完了,故事就结束了,连WAF都没有传到。

来自允许的国家/地区的另一个机器人正在尝试访问 /wp-login.php。 LoginUrl 模块拦截请求 - URL 与自定义 URL 不匹配。返回 404。该机器人认为该网站没有 WordPress。继续前进。

第三个机器人更高级,它以某种方式了解了真实的登录 URL。试图猜测密码。第五次尝试后,LoginProtection 会阻止该 IP。记录、通知管理员。该 IP 会通过 IpManagement 自动列入黑名单。

第四种情况是攻击者不尝试登录,而是通过搜索参数尝试SQL注入。 WAF 识别该模式、阻止请求并将其写入日志。 IP 被发送至隔离区。

第五种情况是攻击者在第三方插件(不是我们的)中发现了漏洞,并设法将 PHP shell 上传到 uploads 目录。 FIM 检测到一个新的 PHP 文件,其中应该只包含图像。管理员收到通知,删除文件并更新易受攻击的插件。

第六种情况是机器人尝试通过 xmlrpc.php 进行攻击。该请求在 XmlRpc 模块级别被阻止。它甚至没有被处理。

看到图案了吗?每个级别都有自己的过滤器。为了获取您的数据,攻击者必须通过所有级别。每个级别都是独立且独立的,但它们共同创建了一个极难绕过的系统。可以撬开的不只是一把锁,而是十把锁,而且每一把都比前一把更难。

我经常听到这样的问题:“这一切会减慢我的网站速度吗?”公平的问题。答:不会,如果实施正确的话。地理封锁是针对内存中数据库的一种 IP 检查(微秒)。登录 URL 检查 - 字符串比较,纳秒。 WAF - 一组正则表达式检查传入请求,需要几毫秒。 CAPTCHA 是客户端验证,根本不加载服务器。 FIM 在后台按计划运行。活动日志 - 在事件期间插入数据库。处理一个请求的总负载约为 5-10 毫秒。这比 Wordfence 对每个请求进行全面扫描要少好几倍。

还有一点我想单独提一下,因为它经常被忽视。安全性不是一次性设置,而是一个过程。您今天可以完美地配置所有模块,但三个月后将会出现一个新的攻击媒介,WordPress 或您的一个插件中的一个新漏洞,一个新的验证码绕过技术。这就是为什么我们的模块随插件一起更新 - WAF 规则得到补充,GeoIP 数据库得到更新,检测算法得到改进。您无需关注它 - 更新会自动进行。这与“设置后忘记它”的方法有根本的区别,“设置后就忘记它”的方法最终会导致六个月后你的“保护”根据六个月前的规则起作用,而攻击者已经在使用你的插件还不知道的方法。

让我明确一点:WooCommerce 商店安全不是您应该忽略或拖延的领域。没有保护的每一天,您的数据、客户的数据和您的声誉都面临风险。我见过商店在数据泄露后关闭——不是因为泄露是灾难性的,而是因为客户的信任无法恢复。我看到一些公司在遭受黑客攻击后支付了数十万卢布进行恢复——转移到干净的服务器、代码审计、通知客户、法律咨询。而这一切本来可以通过一个可以在半小时内配置的模块来避免。

我们的方法不是将安全性作为单独的昂贵产品出售,而是使其成为您已用于管理商店的工具的组成部分。无需安装单独的插件,无需购买单独的许可证,无需了解其他产品的界面。打开 COS WP Woo 设置,转到安全部分,启用必要的模块 - 您的商店将受到保护。 WAF 正在运行,2FA 已配置,地理封锁过滤垃圾流量,监控文件,日志记录每个操作。不是一种工具,而是十种工具——而且它们都和谐地工作,就像一个机制的一部分。

如果从商业角度来看呢?如果算上直接损失(恢复、审计、律师)和间接损失(客户流失、声誉受损、业务中断),平均一家在线商店发生一次安全事件的成本为 200,000 至 2,000,000 卢布。如果您已经拥有 COS WP Woo,则预防成本为零额外卢布。我不知道还有什么更好的商业投资。数学很简单:现在花半个小时进行设置,或者稍后花几周时间进行恢复。在我看来,选择是显而易见的。打电话给我说“我们被黑客攻击了”的客户现在也同意了这一点。


免费试用 COS WP Woo- 安装插件并获得 14 天的所有模块(包括安全性)的完全访问权限。 WAF、双因素身份验证、地理封锁、文件监控、活动日志 - 所有这些将从第一分钟开始保护您的商店。没有限制,没有隐藏费用,无需购买五个不同的插件。一种工具 - 全面保护。