Безопасность:  спим крепко

«Ну, сайт готов, теперь он будет работать вечно». Сайт — не гранитный памятник. В интернете всегда что-то происходит: хакеры тренируются на случайных целях, сервера иногда «падают», а самое страшное — «человеческий фактор» (когда вы лично случайно удалили карточку самого ходового товара в 2 часа ночи).
Безопасность — это не когда «всё заперто на 100 замков», а когда у вас есть план «Б» на любой случай. И этот план должен быть простым, автоматическим и не мешать нормальным людям покупать у вас товары.

Что можно и нужно настроить

1. Автоматические бэкапы (резервные копии)

Это как страховка КАСКО, только для кода. Настраиваем систему так, чтобы каждую ночь (пока вы видите яркие эротические сны) копия вашего магазина улетала в облако или на другой сервер. Что бы ни случилось — через 15 минут всё будет как новенькое.
  • База данных (все заказы, товары, клиенты).
  • Файлы (изображения, загруженные пользователями).
  • Конфигурации сервера и SSL-сертификаты.
Для брутально-махровой надёжности можно хранить копии в трёх местах: на сервере, в облаке (Yandex Cloud / S3) и на отдельном диске. Никогда не знаешь, что откажет первым.

2. Защита «периметра»

Laravel из коробки защищает от многих пакостей (подмена запросов, XSS, CSRF). Но можно накрутить сверху дополнительные засовы:
  • Ограничение попыток входа
    После 5 неудачных паролей админка блокирует IP на 15 минут.
  • Двухфакторная аутентификация (2FA)
    Для ваших сотрудников.
  • Брандмауэр веб-приложений (WAF)
    Фильтрует подозрительные запросы до того, как они дойдут до PHP.
  • Запрет доступа к админке по IP-белому списку
    Опционально, для очень чувствительных проектов.

3. SSL-сертификат (тот самый замочек в браузере)

Без него банк не разрешит принимать платежи, а браузер будет пугать клиентов надписью «Сайт опасен!». Современный стандарт — бесплатные сертификаты от Let’s Encrypt с автоматическим продлением. Важно сделать всё зелёным и доверенным: и сам сайт, и админку, и загрузку изображений.

Защита не должна быть реализована за счёт удобства

Все знают, что для безопасности нужна капча… Нужна, конечно, но не всем и не всегда. Показывать назойливую капчу в сложном исполнении каждому посетителю = терять покупателей.

Капча только для подозрительных

В каталоге бесплатных объявлений Kat.ru реализована многоуровневая система отсева ботов без напряга для людей. Алгоритм работает так:
  • 1. Определяется местоположение посетителя (по IP).
  • 2. Игнорируются HEAD-запросы и запросы к служебным файлам (уязвимости, иконки, логи).
  • 3. Проверяется заголовок Accept. Реальные люди просят HTML. Боты-сканеры часто присылают */* или пустой заголовок.
  • 4. Игнорируется слишком короткий User-Agent или содержащий маркер ботов: curl, nmap, wget, guzzle, aiohttp, zgrab, masscan, censys, shodan, nuclei и другие.
  • 5. Проверяется referrer — откуда пришёл пользователь.
Если кто-то стучится в форму логина без referrer и с мусорным User-Agent — это явно вредоносный бот. Зачем ему показывать капчу? Он просто отсекается на уровне сервера.
А вот посетитель из страны 'RU', который пришёл по рекламной ссылке с известного сайта, сделал три внутренних перехода по страницам и попал на форму регистрации через 15 секунд… Дорогой друг, какая тебе капча? Я так тебя ждал!
Такую же логику можно встроить в ваш магазин.
— Как я тебя узнаю?
— Я буду по пояс голый.
— Это пляж, там все такие...
— На футболке будет надпись «Металлика».

Что ещё рекомендуется

  • Регулярное обновление ядра и пакетов
    Самые страшные дыры закрывают в патчах.
  • Мониторинг целостности файлов
    Если хакер всё же пролез, лучше узнать об этом через час, а не через месяц.
  • Логирование всех действий в админке
    Кто, когда и что удалил/изменил.

Коротко о главном:

  • ✔️ Автоматические ночные бэкапы — ваша страховка.
  • ✔️ SSL-сертификат обязателен для приёма платежей и доверия клиентов.
  • ✔️ Капча не для всех, а только для подозрительных.
  • ✔️ План «Б» есть — и он работает автоматически, пока вы спите.