【问题标题】:How do I load reCAPTCHA Score and Checkbox on the same page?如何在同一页面上加载 reCAPTCHA 分数和复选框?
【发布时间】:2021-06-05 21:57:00
【问题描述】:

目前在登录页面,我需要在同一页面上同时进行评分和复选框reCaptcha评估,如果评分失败我需要动态加载复选框评分。

目前我可以使用它,虽然我不知道我是否正确实现了它。

在我的 HTML 标题中,我有

<script src="https://www.google.com/recaptcha/enterprise.js?render=${Login.reCaptchaScoreKey}"></script>

在我的 html 正文中

<script src="https://www.google.com/recaptcha/enterprise.js?render=explicit"></script>

在 AJAX 中加载我拥有的复选框:

 var captchaContainer = grecaptcha.render('captcha_container', {
              'sitekey' : siteKey,
              'callback' : function() {
                $("#LOGIN").prop('disabled', false);
              }
});

要提交分数,我有以下内容(我将 reCaptcha 生成的令牌附加到 HTML 元素,因为这是我能想出将其发送到后端的唯一方法):

grecaptcha.enterprise.ready(function() {
                grecaptcha.enterprise.execute(scoreKey, {action: action}).then(function(token) {
                    $('#g-recaptcha-response').val(token);
                    submitForm();
                });
              });

似乎很奇怪,我需要包含两次 reCaptcha JS 文件才能使其正常工作,这有点代码味道。如果我按预期删除第一个 JS 文件,我的分数 reCaptcha 会中断,如果我删除第二个,我的复选框会中断。

有没有办法通过只包含一次 reCaptcha JS 来做我想做的事情?还是我这样做的方式好吗?

【问题讨论】:

  • 感谢@ssBarBee,我在发布之前确实看到了该文档,如果我只包括文档中指出的第一个 JS 文件,当我尝试渲染复选框时,我得到:grecaptcha.render is not a function。另外添加 grecaptcha.ready 似乎并没有解决我的问题:/
  • @Nicolaso​​me 这个答案对你有帮助吗? stackoverflow.com/questions/50158132/…
  • @SamJoshua 没有,但我收到了 Google 支持团队的答复。我在下面发布了答案。

标签: javascript ajax spring jsp recaptcha


【解决方案1】:

我收到了 reCAPTCHA Enterprise 支持团队的官方回复:

感谢您与我们联系。我们建议不要放置复选框 得分落后。此处提供了更多详细信息: https://cloud.google.com/recaptcha-enterprise/docs/faq#id_like_to_use_the_score_from_to_show_a_challenge_checkbox_widget_how_can_i_do_this

该常见问题解答中不仅列出了有关 放置在分数后面时复选框小部件的功效,但它也 over 简化了复选框小部件的工作方式。我们执行“对抗 在我们的复选框小部件上具有挑战性”(本质上,我们展示得更难 对已知攻击者的挑战),但我们在放置时无法这样做 在分数 reCAPTCHA 后面。

说了这么多,如果你真的想这样做,你会 必须包含两次 JS 文件。

这是来自他们电子邮件中发布的链接:

我想使用来自 reCAPTCHA Enterprise 的分数来显示挑战/复选框小部件。我该怎么做?

我们建议您不要这样做。 reCAPTCHA Enterprise 希望 在实施过程中看到好的和坏的用户行为。如果你触发 基于 reCAPTCHA Enterprise 的 reCAPTCHA Enterprise 复选框小部件 得分,复选框小部件仅暴露于不良流量。到期的 对此,小部件可能更难确定是否 显示挑战与否。这可能导致发出没有验证码(没有 完全显示的挑战)对欺诈用户或机器人由于麻烦 做出这种区分。

在这些情况下,我们建议仅使用基于质询的网站密钥 预先(例如带有 CHECKBOX 站点密钥的 reCAPTCHA Enterprise), 但在每个页面上安装 SCORE Site Key,以及发布 grecaptcha.enterprise.execute 来训练模型,但在前面 SCORE 代币的评估。本质上,这实现了目标 通过在用户上训练 reCAPTCHA Enterprise CHECKBOX 站点密钥 行为,从而减少对合法用户的挑战,并且 欺诈者面临更多挑战。

【讨论】:

    【解决方案2】:

    添加到您自己的答案中,查看https://developers.google.com/recaptcha/docs/faq#can-i-run-recaptcha-v2-and-v3-on-the-same-page 了解更多关于您仍想这样做的详细信息。

    【讨论】:

    • 我在发布之前确实看到了该文件。不幸的是,在同一页面上合并 V2 和 V3 的步骤似乎不适用于 reCaptcha Enterprise score 和 checkbox。您发送的步骤说只包含 1 个 JS 文件,但如果我只包含文档中指示的第一个 JS 文件,我会得到:grecaptcha.render is not a function when I try to render the checkbox with enterprise。
    猜你喜欢
    • 2010-11-23
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-14
    相关资源
    最近更新 更多