我有一个带有注册页面的 CakePHP 网站,我正在使用 google reCAPTCHA 版本 2 提交注册表单。我已将页面配置为在解决 reCAPTCHA 之前不会提交,但不知何故,我仍然收到数百封提交到我数据库的注册电子邮件。这是我使用的代码:
<div class='g-recaptcha' data-sitekey='6LchSJMpAAAAAOpvZFRoMM9WEHhMLARnsjNTRFBi' data-callback='enableBtn'></div>
<input type="submit" class="input_field button submit" onclick="LoginButton()" value="Register" disabled="disabled" id="button1"></div>
function enableBtn(){
document.getElementById("button1").disabled = false;
}
LoginButton() 用于验证 reCAPTCHA 提交
垃圾邮件发送者绕过前端的 Google reCAPTCHA,直接将表单提交到您的服务器。这种情况之所以会发生,是因为 reCAPTCHA 验证仅在客户端进行,这并不安全。您需要在服务器端验证 reCAPTCHA 响应以确保其完整性。Google reCAPTCHA 提供了一个服务器端 API 来验证在客户端生成的令牌。确保您的 reCAPTCHA 小部件设置正确并包含令牌的名称属性。
在您的 PHP 代码中,使用 Google 的 reCAPTCHA API 验证 g-recaptcha-response 令牌
将 YOUR_SECRET_KEY 替换为 reCAPTCHA 配置中的密钥。