接入谷歌Google人机验证:reCaptcha进行安全验证
Java
梦想屋
8688
0
我们在开发网站的时候,经常需要各种人机验证,那我们就来学习下,网站如何接入谷歌Google人机验证:reCaptcha进行安全验证,本次使用的是 Google人机验证 3.0版本

Google人机验证V3
recaptcha v3为每个请求返回一个没有用户摩擦的分数,评分是基于用户与您的站点的交互,并使您能够为您的站点采取适当的行动。大约0.5是阀值,低于这个阀值,就需要进行一些识别和处理。
申请密钥
1、先要有一个google账户,然后再去reCaptcha官网申请网站为:https://developers.google.com/recaptcha/(需要过翻,你懂的)
2、去https://www.google.com/recaptcha/admin#list 里面去创建秘钥对,并且查看

申请

查看密钥
大致流程:
1.页面加载完毕,会自动去访问app.js会进行回调,拿到token后,将token传递给后端,
2.后端拿到token,去调用recaptcha提供的校验接口,进行校验,调用成功,返回json数据,后端可以根据json数据拿到分数字段
3.根据分数做自定义验证,或者直接响应异常
注意点:鉴于国情,在国内使用的话,需要将demo中所有的www.google.com替换成www.recaptcha.net不然无法使用reCAPTCHA
创建页面
前端部分代码:
<script src="https://www.recaptcha.net/recaptcha/api.js?render=公钥"></script> <script> grecaptcha.ready(function() { grecaptcha.execute('公钥', {action: 'login'}).then(function(token) { $.ajax({ type: "POST", url:"/check", data: {"token":token}, success: function(result) { alert(result); } }); }); }); </script>
服务器端就需要看根据前端提交过来的token进行校验,注意,你可以使用ajax提交,也可以吧token插入到HTML的input hidden隐藏框,一起提交到后端进行校验
后端校验部分代码,java代码,其他编程语言类似,核心就是请求校验的接口:
public String check(HttpServletRequest request) { String checkCode = request.getParameter("token"); Map<String, Object> map = new HashMap<>(); // 私钥 map.put("secret", "私钥"); map.put("response", checkCode); String json = MyHttpRequest.sendPost("https://www.recaptcha.net/recaptcha/api/siteverify", map, "UTF-8"); return json; }
好了,其实核心也很简单,按照上面的流程过程知道了,就可以实现。