使用Google的reCaptcha保护来自机器人的下载链接

豪尔赫·安佐拉(Jorge Anzola)

我试图将下载链接插入带有reCaptcha的表单中(按照Google的说明),但是即使您没有通过验证码挑战,“提交”按钮也会打开该链接。

代码很简单:

<head>
<script src='https://www.google.com/recaptcha/api.js'></script>
</head>
<body>
<form action="download link">
    <input type="submit" value="download">
    <div class="g-recaptcha" data-sitekey="xxx"></div>
</form>
</body>

JSFiddle

有人知道为什么这行不通吗?谢谢!

查克·勒·巴特

我认为您对Google reCaptcha的工作方式有些困惑-它不会阻止POST(用户可以轻松绕过这样的事情),它用于允许服务器端代码检查用户是否不是机器人。

这意味着您还必须在服务器端有一些东西来检查正在提交的内容。您不能只在客户端这样做。(尽管看起来Google正在进行客户端的所有操作,但reCaptcha按钮实际上位于另一台服务器上的iframe中。)

例如。在此处查看Google的演示:https : //www.google.com/recaptcha/api2/demo

请注意,当您单击“提交”时,它仍会将数据回传到服务器上-服务器会响应说您是否是人类。

正如Google的文档所述:

当您的用户提交集成reCAPTCHA的表单时,您将获得一个名为“ g-recaptcha-response”的字符串作为有效载荷的一部分。为了检查Google是否已验证该用户,请发送带有以下参数的POST请求:

网址:https//www.google.com/recaptcha/api/siteverify

密码(必填)xxx
响应(必填)'g-recaptcha-response'的值。
remoteip最终用户的IP地址。

基本上,您需要检查POST请求是否secret与Recaptcha帐户中的密钥匹配。如果是这样,则应该给用户一个下载链接,如果没有,则返回错误消息。

您可以在reCaptcha文档中了解有关此过程的更多信息:https : //developers.google.com/recaptcha/docs/verify


更新:如果您不关心有人会伪造结果,则可以使用JavaScript来做到这一点,例如:JSFiddle

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章