Контактная форма отправляется без проверки reCAPTCHA - PullRequest
0 голосов
/ 14 марта 2019

Я создаю веб-приложение с контактной формой, и на моем веб-сайте есть Google reCAPTCHA (v2) для предотвращения робота-спама.

Я добавил этот код на сайт:

<div class="g-recaptcha" data-sitekey=""></div>


<script src="https://www.google.com/recaptcha/api.js" async defer></script>

Когда я пытаюсь отправить свою форму, я могу отправить ее без использования reCAPTCHA.

Я что-то не так делаю?

Ответы [ 3 ]

1 голос
/ 14 марта 2019

В дополнение к тому, что сказал Гальзор, вам нужно реализовать проверку на стороне сервера, как описано здесь https://developers.google.com/recaptcha/docs/verify

Шаги следующие:

  • добавить виджет reCaptcha вформу, которую вы хотите защитить, используйте открытый ключ при регистрации виджета (вы должны иметь его с консоли https://www.google.com/recaptcha/admin/create при регистрации reCaptcha)

  • при отправке формы в javascriptубедитесь, что капча решена путем проверки поля ввода $ ("# g-recaptcha-response") для длинной строки хеш-строки (токена)

  • при отправке формы на стороне сервера,перед обработкой чего-либо, вам нужно позвонить в Google Recaptcha Api с секретом (закрытый ключ от консоли тоже) и проверить ответ.

Если вы не внедрите проверку на стороне сервера, бот можетдобавьте что-то, выглядящее как обычный ответ, к вводу # g-recaptcha-response и передайте проверку на стороне клиента.Это также означает, что недостаточно просто проверить на стороне сервера или клиента, что ввод не пуст - Вам нужно вызвать ReCaptcha API и проверить его ответ, если токен действителен (Google предоставляет готовую библиотеку для php)

1 голос
/ 14 марта 2019

Получил точный ответ, который я искал в этом видео: https://youtu.be/rFccSL76SeY

Спасибо всем, кто хотел помочь!

0 голосов
/ 14 марта 2019

Вы можете использовать следующий маленький код jquery, чтобы проверить, пытается ли пользователь отправить форму, не нажимая на кнопку рекапчи.

$("form").submit(function(event) {
   var recaptcha = $("#g-recaptcha-response").val();
   if (recaptcha === "") {
      event.preventDefault();
      alert("Please check the recaptcha");
   }
});

Более того, вы можете использовать приведенный ниже код для вызова API, чтобы проверить,Ответ действителен.Если пользователь подтвердил свою личность, ответом будет очень длинная строка.

if (grecaptcha.getResponse() == ""){
    alert("You can't proceed!");
} else {
    alert("Thank you");
}

посмотрите здесь Как проверить Google reCaptcha в форме отправки для получения дополнительной информации о том, какподтвердить резюме.

...