Руководство по безопасности
PulseHub построен с безопасностью как основополагающей задачей.
Аутентификация
- Пароли: bcrypt с фактором стоимости 12 — никогда не хранятся в открытом виде
- Сессии:
HttpOnly,SameSite=Strict,use_strict_mode, перегенерируются при входе - Сравнение с постоянным временем через
password_verify()иhash_equals()
Защита от SQL-инъекций
Все запросы используют подготовленные выражения PDO с EMULATE_PREPARES = false. Пользовательский ввод никогда не может быть интерпретирован как SQL-синтаксис.
Защита от XSS
Весь динамический вывод экранируется с помощью e() → htmlspecialchars(ENT_QUOTES | ENT_HTML5, 'UTF-8').
Защита от CSRF
Куки SameSite=Strict предотвращают кросс-сайтовые запросы. Формы входа и установщика содержат скрытое поле _token.
Проверка подписи вебхуков
- WhatsApp, Facebook, Instagram: HMAC-SHA256 с App Secret
- Viber: HMAC-SHA256 с Auth Token
- Все используют
hash_equals()(постоянное время)
Контроль доступа к директориям
Чувствительные директории (config/, app/, data/) заблокированы от веб-доступа через .htaccess и конфигурацию nginx.
Рекомендуемые заголовки безопасности
<IfModule mod_headers.c>
Header set X-Frame-Options "SAMEORIGIN"
Header set X-Content-Type-Options "nosniff"
Header set X-XSS-Protection "1; mode=block"
Header set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>
Поддержание безопасности PulseHub
- Поддерживайте PHP и MySQL в актуальном состоянии
- Используйте HTTPS повсеместно
- Периодически меняйте API-ключи
- Мониторьте логи cron
- Регулярно создавайте резервные копии базы данных и директории
config/