Php Google recaptcha第二次未在服务器端验证
我有一个包含多个字段的表单&recaptcha。如果单击“提交”按钮时其中一个字段无效,则recaptcha有效,它将提交表单,但验证这些字段,如果失败,则向用户返回错误消息 在此阶段,recaptcha仍在前端进行检查和验证。如果用户修复了出现错误消息的字段上的问题,并重新提交表单,则来自recaptcha的响应为false,因此未验证 输入有效电子邮件后,我收到以下信息: 我检查验证码的功能如下:Php Google recaptcha第二次未在服务器端验证,php,recaptcha,Php,Recaptcha,我有一个包含多个字段的表单&recaptcha。如果单击“提交”按钮时其中一个字段无效,则recaptcha有效,它将提交表单,但验证这些字段,如果失败,则向用户返回错误消息 在此阶段,recaptcha仍在前端进行检查和验证。如果用户修复了出现错误消息的字段上的问题,并重新提交表单,则来自recaptcha的响应为false,因此未验证 输入有效电子邮件后,我收到以下信息: 我检查验证码的功能如下: 如果为false,则会导致上面屏幕截图上显示的错误消息。recaptcha验证只有一次有
如果为false,则会导致上面屏幕截图上显示的错误消息。recaptcha验证只有一次有效 您有几种可能的方法:
- 保存用户已成功完成验证码且不要求其第二次通过验证的会话变量。请确保在成功提交时清除该变量,否则攻击者可能会解决一次并提交一百万次
- 重新显示验证码(使用
调用),并要求他们在表单提交失败时再次填写验证码李>grecaptcha.render
- 在所有其他字段首先验证之前,不要验证验证码
- 来自官方:
如果您的网站使用AJAX请求执行服务器端验证,
您应该只验证用户的reCAPTCHA响应令牌
(g-recaptcha-response)一次。如果已尝试使用
特定令牌,不能再次使用。你需要打电话
grecaptcha.reset()请求最终用户再次使用reCAPTCHA进行验证
也就是说,verifyCaptcha()函数只能运行一次。将验证标志保存到会话变量中,只需检查它是否存在,以及在后续的每个请求中是否有效。这不是预期的行为吗?我宁愿在所有条目都生效之前不提交表单(以及验证)。