Безопасность: спим крепко
«Ну, сайт готов, теперь он будет работать вечно». Сайт — не гранитный памятник.
В интернете всегда что-то происходит: хакеры тренируются на случайных целях, сервера иногда «падают»,
а самое страшное — «человеческий фактор» (когда вы лично случайно удалили карточку самого ходового товара в 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-сертификат обязателен для приёма платежей и доверия клиентов.
- ✔️ Капча не для всех, а только для подозрительных.
- ✔️ План «Б» есть — и он работает автоматически, пока вы спите.