安企CMS使用 reCAPTCHA 漫游器防护功能阻止自动化攻击
功能介绍

安企CMS使用 reCAPTCHA 漫游器防护功能阻止自动化攻击

reCAPTCHA 是一种强大的漫游器拦截工具,可保护网站免受网络垃圾、滥用行为和欺诈行为的侵害。它通过分析用户行为和其他因素来确定操作是由真人还是漫游器执行的。如果检测到可疑活动,reCAPTCHA 可能会采取措施来防止未经授权的访问,例如显示验证挑战或完全阻止互动。这有助于确保网站保持受保护状态,同时尽可能减少对合法用户的干扰。 以下是三项关键功能: 自适应风险评估:分析各种因素,评估用户是漫游器的风险,并相应地调整响应 高级漫游器检测:采用先进技术区分真人与漫游器,确保准确识别 持续学习

功能介绍

reCAPTCHA 是一种强大的漫游器拦截工具,可保护网站免受网络垃圾、滥用行为和欺诈行为的侵害。它通过分析用户行为和其他因素来确定操作是由真人还是漫游器执行的。如果检测到可疑活动,reCAPTCHA 可能会采取措施来防止未经授权的访问,例如显示验证挑战或完全阻止互动。这有助于确保网站保持受保护状态,同时尽可能减少对合法用户的干扰。

以下是三项关键功能:

自适应风险评估:分析各种因素,评估用户是漫游器的风险,并相应地调整响应 高级漫游器检测:采用先进技术区分真人与漫游器,确保准确识别 持续学习:运用机器学习技术不断提高漫游器检测的准确率,并根据新的威胁做出调整

注意 服务器在国内的不要启用,国内无法正常使用该功能。

先在 Google Cloud 上配置

安企CMS现在支持配置使用 reCAPTCHA 拦截网站留言自动化攻击。下面是安企CMS接入 reCAPTCHA 的操作方法:

  1. 访问 https://cloud.google.com/security/products/recaptcha, 点击【开始使用】按钮,并填写网站信息(已添加网站的,点击【Fraud Defense 控制台】进去操作)。 recaptcha-1.png
  2. 在弹出的【注册新网站】页面中,填写标签、选择 reCAPTCHA 类型、域名、项目(如果没有项目,则需要先创建),填写完成后,点击提交按钮完成创建。 recaptcha-2.png recaptcha-3.png
  3. 创建过程大约需要30秒左右,创建完成后,会来到【将 reCAPTCHA 添加到您的网站】页面,上面包含了 网站密钥 和 通信密钥,请几十妥善保管 recaptcha-4.png

再在 安企CMS 管理后台上配置

来到 安企CMS 网站的管理后台,在 功能 -> 系统功能 里找到【Akismet/reCAPTCHA】(也可以在顶部搜索栏搜索 reCAPTCHA) recaptcha-5.png 点击【Akismet/reCAPTCHA】功能进入配置页面,在出现的页面中,选择 开启 reCAPTCHA, 并填写 网站密钥 和 通信密钥,点击保存使配置生效。 recaptcha-6.png

安企CMS 前端留言界面配置

在安企CMS 管理后台配置了 网站密钥 和 通信密钥 后,前端界面还不会直接出现 reCAPTCHA,还需要进行界面适配。

在安企CMS站点中,前端模板可以通过网站密钥变量 recaptcha_key 来判断站点有没有启用了 reCAPTCHA,如果启用了,则网站密钥recaptcha_key会存在正确的值。

我们在留言表单中添加对应的判断来使用 reCAPTCHA:

操作 template/default/guestbook/index.html(其他模板同理,留言表单均可用)

<form> 元素增加 id="guestbook-form"

在 form 表单内部添加如下代码:

  <!-- 使返回值为JSON -->
  <input type="hidden" name="return" value="json">
  <p class="form-tip mt-2 hidden text-sm"></p>

{%- if recaptcha_key %}
  <!-- 启用 reCAPTCHA -->
  <script src="https://www.google.com/recaptcha/api.js?render={{recaptcha_key}}"></script>
  <script>
      (function () {
          // 供提交脚本调用:获取 reCAPTCHA token,失败时回调 null 降级为直接提交
          window.getRecaptchaToken = function (cb) {
              if (typeof grecaptcha === 'undefined') {
                  cb(null);
                  return;
              }
              grecaptcha.ready(function () {
                  grecaptcha.execute('{{recaptcha_key}}', { action: 'guestbook' }).then(function (token) {
                      cb(token);
                  }).catch(function () {
                      cb(null);
                  });
              });
          };
      })();
  </script>
{%- endif %}
<script>
    (function () {
        var form = document.getElementById('guestbook-form');
        if (!form) return;
        var tip = form.querySelector('.form-tip');
        var submitBtn = form.querySelector('button[type="submit"]');

        function showTip(text, ok) {
            if (!tip) return;
            tip.textContent = text;
            tip.classList.remove('hidden');
            tip.classList.toggle('text-green-600', ok);
            tip.classList.toggle('dark:text-green-400', ok);
            tip.classList.toggle('text-red-600', !ok);
            tip.classList.toggle('dark:text-red-400', !ok);
        }

        function doSubmit(token) {
            if (token) {
                var input = form.querySelector('input[name="recaptcha_token"]');
                if (!input) {
                    input = document.createElement('input');
                    input.type = 'hidden';
                    input.name = 'recaptcha_token';
                    form.appendChild(input);
                }
                input.value = token;
            }
            if (submitBtn) submitBtn.disabled = true;
            fetch(form.action, { method: 'POST', body: new FormData(form) })
                .then(function (res) { return res.json(); })
                .then(function (res) {
                    if (res.code === 0) {
                        showTip('留言提交成功,我们会尽快与您联系!', true);
                        form.reset();
                    } else {
                        showTip(res.msg || '留言提交失败,请稍后重试。', false);
                    }
                })
                .catch(function () {
                    showTip('留言提交失败,请稍后重试。', false);
                })
                .finally(function () {
                    if (submitBtn) submitBtn.disabled = false;
                });
        }

        form.addEventListener('submit', function (e) {
            e.preventDefault();
            if (typeof window.getRecaptchaToken === 'function') {
                window.getRecaptchaToken(doSubmit);
            } else {
                doSubmit(null);
            }
        });
    })();
</script>

保存代码后,就可以启用 reCAPTCHA 了。

你在页面右下角看到 一个 reCAPTCHA 正常的图标,则表示配置完全正确

recaptcha-7.png

相关功能

安企CMS 配置谷歌登录教程

安企CMS 配置谷歌登录教程

前置条件:您得有Google账号 访问: https://console.cloud.google.com/ 并完成登录 创建 Google API 项目 已有项目,则可以跳过此步骤 快捷访问地址:https://console.cloud.google.com/projectcreate 在出现的界面上输入项目名称,需要填写英文名称,然后点击创建按钮完成创建。 创建完成后会来到项目页面

安企CMS多站点迁移教程

安企CMS多站点迁移教程

安企CMS多站点中默认(Go项目)站点迁移教程 默认(Go项目)站点迁出 登录安企CMS后台,在功能管理中找到 备份与恢复 功能,并新增一条备份记录。这么做是为了将数据库中的数据备份成文件。 回到宝塔面板,找到 网站 ,切换到 GO项目 找到需要迁移的站点,点击对应的根目录,通过打开的文件管理页面上的导航,切换到上一级目录,在对应目录中,找到刚才的站点目录,并点击右边的压缩按钮

安企CMS MCP 功能使用帮助

安企CMS MCP 功能使用帮助

很多系统的 MCP 能力需要额外安装插件、部署独立服务,而安企CMS 选择了更彻底的做法:把 MCP Server 直接内置到系统内核中 。升级到支持 MCP 的版本后,无需任何额外部署,网站本身就是一个标准的 MCP 服务器。 想象一下这样的场景:早上打开 AI 助手,说一句&rdquo;帮我把上个月的访问数据整理成日报发给我,再把「SEO」分类下点击量最低的 10 篇文章列出来&rdquo;,几十秒后结果就摆在你面前——而这背后,你从头到尾没有打开过网站后台。 这不是想象,这正是安企CMS