背景:我的网站非常简单,包含一个包含链接列表的主页(由第三方服务提供)--每个链接都会弹出一个带有提交按钮的文件上传输入。在该弹出窗口中,我嵌入了Recaptcha脚本,并在提交文件时验证了令牌。由于这个多个弹出设置,我选择了V3来实现与验证机制的零用户交互。
现在,一个问题出现了--我应该如何解释谷歌的反应。
谷歌的V3文档说:
reCAPTCHA通过在你的网站上看到真正的流量来学习。因此,在准备环境中或在实现后不久的分数可能与生产不同。由于reCAPTCHA v3从未中断用户流,所以您可以先运行reCAPTCHA而不采取行动,然后通过查看管理控制台中的流量来决定阈值。默认情况下,可以使用0.5.阈值。
我非常清楚,从这个描述中,score
才是最重要的-- 0.0对于最有可能的机器人,1.0对于最有可能的人类。所以在我的代码中,我检查了success == true
和score >= 0.5
但是,我在网上找到的用于服务器端验证的none示例注意到了分数。这里有三个。这三种方法只检查请求是否成功:
https://stackoverflow.com/a/54118106/3367818
https://stackoverflow.com/a/52633797/3367818
https://dzone.com/articles/adding-google-recaptcha-v3-to-your-laravel-app
最后,我的问题是-这是对V3机制的误解,还是我遗漏了什么?
谢谢。
发布于 2022-01-01 11:40:53
来补充@BrettM的答案..。
这取决于核查的处理方式。
参见代码行ReCaptcha::verify()第180-182行
$response->isSuccess()
将返回false
。
$response->getErrors()
将包含E_SCORE_THRESHOLD_NOT_MET
$response->isSuccess()
将返回true
,除非有错误。
现在应该检查$response->getScore()
。不使用reCAPTCHA PHP客户端库:
$response‘’success‘和$response’‘score’都应该检查。
发布于 2019-07-23 14:11:39
是的,你绝对应该在Google的验证反应中检查“分数”的值。
这三个例子非常缺乏细节,而且实际上相当混乱。
“成功”仅仅意味着您发送了一个格式良好的请求,并提供了正确的标记和秘密。
听起来你已经在检查“分数”的价值了,所以这很好,但我只是想澄清一下,对于那些发现这个问题,但仍然有点困惑的人来说。
https://stackoverflow.com/questions/56166663
复制相似问题