WEB и WordPress новости, темы, плагины. Здесь мы делимся советами и лучшими решениями для сайтов.

Как создать приманку для борьбы со спамом в форме в Laravel

204

Как только ваш сайт заработает, очень скоро вы начнете получать спам из форм. Спам-боты пишут компьютерную программу, которая просто заполняет вашу форму поддельной информацией. Для владельцев сайтов – головная боль – очищать эти нежелательные данные и защищать вашу базу данных от таких ненужных записей. Эта статья написана для людей, которые создали свое приложение на Laravel. Мы изучим, как можно защитить свои формы от спама в Laravel.

Пользователь может добавить reCAPTCHA в свою форму, которая будет проверять, заполняются ли значения формы людьми или нет. Но при этом ваши пользователи должны решить головоломку перед отправкой формы. Другой способ – добавить последнюю версию Google reCAPTCHA. Но в правом нижнем углу вашего сайта будет отображаться значок reCAPTCHA.

Большинство владельцев сайтов не любят капчи. А если вы ненавидите капчи, держите в своих формах приманку, которая будет улавливать спам-боты.

В большинстве случаев спам-боты глупы, так как они просто заполняют все поля вашей формы. Они не знают, какие поля формы фактически используются для дальнейшей обработки. Мы можем воспользоваться этим сценарием и добавить в нашу форму фиктивное поле ввода (honeypot). Это скрытое поле должно оставаться пустым во время отправки формы. Таким образом, при проверке на стороне сервера, если это скрытое поле пусто, это будет действительная отправка формы, а если она не пуста, то это будет спам. Сказав это, давайте посмотрим, как создать приманку и защитить формы веб-сайтов от спама.

Создание приманки и предотвращение распространения спама в форме

Как мы уже говорили, используя скрытое поле, мы можем обмануть спам-ботов и остановить отправку формы на стороне сервера. Для этого воспользуемся пакетом laravel-honeypot. Используя этот пакет, пользователь может легко защитить одну или несколько форм. Им не нужно писать серверный код для каждой формы отдельно.

Для установки пакета откройте терминал в корневом каталоге вашего проекта и выполните команду:

composer require spatie/laravel-honeypot

После установки пакета опубликуйте файл конфигурации пакета с помощью команды:

php artisan vendor:publish --provider="SpatieHoneypotHoneypotServiceProvider" --tag=config

Эта команда добавит honeypot.phpфайл в configкаталог. Вам не нужно изменять конфигурационный файл. Вместо этого в .envфайл добавьте константу, показанную ниже.

HONEYPOT_NAME=honeypot_for_bots

Здесь мы дали имя “honeypot_for_bots”, которое будет именем вашего скрытого поля. Вы можете присвоить этой константе любое другое имя.

Затем зарегистрируйте глобальное промежуточное ПО, которое будет защищать все ваши формы из одного места.

appHttpKernel.php

<?php
…
…
protected $middleware = [
   // ...
   SpatieHoneypotProtectAgainstSpam::class,
];

Все сделано! Теперь перейдите в свою форму и добавьте к ней приманку, добавив @honeypotв форму HTML. Ваш файл лезвия будет выглядеть примерно так, как показано ниже.

<form action="" method="post">
    @honeypot
    <input type="text" name="fullname" placeholder="Full Name" />
    <input type="submit" name="submit" value="Submit" />
    {{ csrf_field() }}
</form>

Теперь, если спам-боты пытаются рассылать спам в вашей форме, пакет отклонит запрос. В результате в вашей базе данных больше не будет спама.

Статьи по Теме

Источник записи: artisansweb.net

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее