我正在我的应用程序中实施 Google 的 reCaptcha。根据文档,我的 API 请求必须包括我的密钥和响应,以及可选的用户远程 ip。
出于什么原因,我会包含远程 ip?
我正在我的应用程序中实施 Google 的 reCaptcha。根据文档,我的 API 请求必须包括我的密钥和响应,以及可选的用户远程 ip。
出于什么原因,我会包含远程 ip?
因为可能存在 DNS/hosts 重新路由,以允许恶意用户以不同方式解析验证码
一种可能的情况是利用廉价劳动力手动解决验证码,然后将它们与表单一起提交。由于recaptcha 只会在使用这种方式时才提供图像,这是一种懒惰的方式来解决这个问题。(将请求的图像重定向到其他地方)。
如果请求图像的 IP 地址与请求页面的 IP 地址不同,则表明这种攻击方式。
在某些情况下,过去 Google 会拒绝没有远程 IP 的请求。稍后,他们将采用任何字符串,包括空白字符串。现在它似乎是可选的。我想他们正在要求 ip 来帮助保护您的目的,并帮助防止滥用 API。当前的文档将其标记为可选,因此如果您愿意,可以随意省略它。
https://developers.google.com/recaptcha/docs/verify
这是 2010 年的 Google Groups 帖子,其中 Recaptcha 支持意味着 remoteip 有朝一日可能成为强制性的:
https://groups.google.com/forum/#!topic/recaptcha/Q83LJKz4biA
好像没有发生过。但看起来他们曾经考虑过将其强制执行,但没有通过。这纯粹是我的猜测。
还有另一个原因——很多内部网络也使用recaptcha——比如在WiFi热点上,等等。
在这些情况下,Google 将用户和服务器的 IP 视为相同,因为它们共享相同的连接。为 Google 提供用户的本地 IP 可以让风险评估机器更好地跟踪暴力选择图片的个人,否则会将所有用户列入黑名单。
< tinfoil> 谷歌也想要你的数据,但不能总是证明为什么</tinfoil>
当我将我的“分数”与不同的场景进行比较时,我看到了:
我不确定这个测试是否总是会给出相同的结果,但这是我今天通过多次测试得到的结果。
因此,提供 ip 有助于获得更好的分数,这是客户端和服务器端的双重检查,有助于检测不良活动。