gpt4 book ai didi

java - 谷歌验证码 : How to get user response and validate in the server side?

转载 作者:IT老高 更新时间:2023-10-28 21:09:29 25 4
gpt4 key购买 nike

我正在做一个 Java (JSP + Servlet) Web 应用程序(我知道这个问题与技术无关)。我希望使用最新的 Google reCAPTCHA 服务。

我正在使用此处找到的 Google reCAPTCHA 示例:

https://developers.google.com/recaptcha/docs/display#config

<html>
<head>
<title>reCAPTCHA demo: Simple page</title>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
</head>
<body>
<form action="?" method="POST">
<div class="g-recaptcha" data-sitekey="my_site_key"></div>
<br/>
<input type="submit" value="Submit">
</form>
</body>
</html>

我可以看到显示的recaptcha图像如下:

enter image description here

当我检查“我不是机器人”时,我得到以下信息:

enter image description here

如您所见,有一个“验证”按钮,根据我的测试,用户响应会发送给 Google 进行验证。

如何获取用户响应,以便我可以在自己的后端代码中验证用户响应(如 Google 在 https://developers.google.com/recaptcha/docs/verify 中所建议的那样)。

g-recaptcha-response POST parameter when the user submits the form on your site

在服务器端,我可以通过单击“提交”按钮从参数“g-recaptcha-response”获取用户输入,仅当用户首先通过 Google 成功验证时。否则,“g-recaptcha-response”在服务器端为空白。这意味着我只有在客户端验证成功后才能进行服务器端验证。如果是这样,在服务器端进行另一次验证有什么意义,这是 Google reCAPTHA 提供的选项?

我有什么想念的吗?

最佳答案

新的 Google Recaptcha 最酷的地方在于验证现在完全封装在小部件中。这意味着,小部件将负责提出问题,一直验证响应,直到确定用户实际上是人类,然后您才会获得 g-recaptcha-response 值。 p>

但这并不能保证您的网站免受 HTTP 客户端请求伪造的影响。

任何具有 HTTP POST 知识的人都可以将随机数据放入 g-recaptcha-response 表单字段中,并欺骗您的网站,使其认为该字段是由 google 小部件提供的。所以你必须验证这个 token 。

在人类语言中,就像,

  • 你的服务器:嘿 Google,有个家伙告诉我他不是机器人。他说你已经证实他是人类,他让我给你这个 token 作为证明。
  • Google:嗯……让我检查一下这个 token ……是的,我记得这个家伙我给了他这个 token ……是的,他是用肉和骨头让他通过。
  • 你的服务器:嘿 Google,还有一个家伙告诉我他是人类。他还给了我一个 token 。
  • Google:嗯……这和你上次给我的 token 一样……我很确定这家伙是想愚弄你。告诉他离开你的网站。

验证响应非常简单。只需发出 GET 请求即可

https://www.google.com/recaptcha/api/siteverify?secret=your_secret&response=response_string&remoteip=user_ip_address

并将 response_string 替换为您之前通过 g-recaptcha-response 字段获得的值。

您将获得带有 success 字段的 JSON 响应。

更多信息在这里: https://developers.google.com/recaptcha/docs/verify

编辑:它实际上是一个 POST,根据 documentation here .

关于java - 谷歌验证码 : How to get user response and validate in the server side?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27297067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com