背景:我的网站非常简单,包含一个带有链接列表的首页(由3rd party服务提供)-每个链接都会弹出带有“提交”按钮的文件上传输入。在该弹出窗口中,我嵌入了Recaptcha脚本,并在提交文件时验证了令牌。由于存在多个弹出设置,因此我选择V3进行零用户与验证机制的交互。
现在,出现一个问题-我该如何解释Google对Google的回应。
Google文档第3版说:
reCAPTCHA通过查看您网站上的实际流量进行学习。因此,在暂存环境中或实施后不久的分数可能与生产环境有所不同。由于reCAPTCHA v3从未中断用户流程,因此您可以先运行reCAPTCHA而无需采取任何措施,然后通过在管理控制台中查看流量来确定阈值。默认情况下,您可以使用0.5的阈值。
从我的描述中,我很清楚score,最重要的是-最可能的机器人为0.0,最可能的机器人为1.0。所以在我的代码中,我检查success == true并score >= 0.5
但是- 我在网上找到的用于服务器端验证的V3示例中,没有一个与分数有关。这是其中的3个 这三个仅检查请求是否成功:
https://dzone.com/articles/adding-google-recaptcha-v3-to-your-laravel-app
最后,我的问题是-是对V3机制的误解,还是我错过了一些东西?
谢谢。
小智 16
是的,您绝对应该检查 Google 验证响应中“分数”的值。
这三个例子非常缺乏细节,实际上非常混乱。
“成功”仅意味着您使用正确的令牌和秘密发送了一个格式良好的请求。
听起来您已经在检查“分数”的值,这很好,但我只是想为发现此问题但仍然有点困惑的任何人澄清这一点。
为了补充@BrettM的答案......
这取决于处理验证的方式。
请参阅代码行ReCaptcha::verify() 第 180-182 行
$recaptcha = new Recaptcha($secret);
$response = $recaptcha
->setExpectedHostname($hostname)
->setExpectedAction($action)
->setScoreThreshold(.5)
->verify($token, $ip);
Run Code Online (Sandbox Code Playgroud)
$response->isSuccess()false当未达到阈值时将返回。$response->getErrors()将包含E_SCORE_THRESHOLD_NOT_MET$response->isSuccess()将返回true,除非有错误。$response->getScore()现在应该进行检查。$response['success'] 和 $response['score'] 都应该被检查。
| 归档时间: |
|
| 查看次数: |
725 次 |
| 最近记录: |