定制 wilfreedi/laravel-site-protection 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

wilfreedi/laravel-site-protection

最新稳定版本:0.1.9

Composer 安装命令:

composer require wilfreedi/laravel-site-protection

包简介

Site protection

README 文档

README

Laravel Site Protection

Packagist License Packagist Downloads Packagist Version

Базовая защита сайта на laravel

Простоя защита сайта на laravel

Возможности

  1. Установить лимит на кол-во заходов пользователя за n времени
  2. Установить лимит на кол-во заходов пользователя на старницу 404
  3. Идентификация ботов по useragent

При достижении лимитов или идентификации бота, происходит редирект на страницу проверки с капчей, после успешной прохождении капчи, ip адрес заносится в белый список на 1 час

Установка

composer require wilfreedi/laravel-site-protection

Добавление middleware

Добавить middleware в app/Http/Kernel.php или на конкретный маршрут

protected $middlewareGroups = [
    'web' => [
        ...
        \Wilfreedi\SiteProtection\Middleware\SiteProtectionMiddleware::class
    ],
    ...
];

Проверка работы JS у пользователя

  1. Включаем в настройках проверку JS js.check = true
  2. Генерируем рандомный ключ AES-128 (длина 16 байт) и добавляем его в js.key, он будет использоваться для шифрования передаваемых данных с JS на сервер
  3. Выводим сгенерированный ключ в шапке сайта <meta name="protection-key" content="{{ config('siteprotection.js.key') }}">
  4. Подключаем JS скрипт проверки <script defer="defer" type="application/javascript" src="{{ asset('site-protection/js/script.js') }}"></script>(JS скрипт нужно опубликовать у себя, через команду публикации файла настроек)

Публикация файла настроек

php artisan vendor:publish --provider="Wilfreedi\SiteProtection\SiteProtectionServiceProvider"

Что входит в настройки

Ключ Тип Значение Что делает
enabled bool true/false включение защиты сайта
theme_color string white/black цвет темы на странице проверки капчи
description string <p>Мы заме..</p> текст, выводится на странице капчи
js.check bool true/false проверка, что js включен
js.key string 1234567890abcdef ключ для шифрования передаваемых данных через js на сервер, AES-128 (длина 16 байт)
captcha.provider string recaptcha/yandex сервис капчи
bots.enabled_all bool true/false включение отправки на капчу всех, у кого в useragent есть вхождение - bot
bots.blocked array ['Bytespider'...] название ботов для блокировки
bots.allowed array ['Yandexbot'...] название ботов, которых пропускам(в случа если включен bots.enabled_all, но нужно пропустить ботов, например яндекс)
rate_limiting.max_requests int 5 максимальное кол-во запросов
rate_limiting.time int 1 за какое время (секунды)
404_protection.max_404_errors int 5 максимальное кол-во ответов 404
404_protection.time int 15 за какое время (секунды)
exclude_paths array ['panel'...] список страниц, которые нужно исключить из защиты

Рекомендации

Сохранение текущего состояния пользователя(кол-во заходов, черный/белый список) находится в кэше
Рекомендуется установить кеширование в redis

CACHE_DRIVER=redis

Сообщить о проблеме

Если вы обнаружите ошибку или у вас есть предложения по улучшению библиотеки, пожалуйста напишите нам

统计信息

  • 总下载量: 21
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-01-22