Перейти к основному содержимому

Руководство по безопасности

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

  1. Поддерживайте PHP и MySQL в актуальном состоянии
  2. Используйте HTTPS повсеместно
  3. Периодически меняйте API-ключи
  4. Мониторьте логи cron
  5. Регулярно создавайте резервные копии базы данных и директории config/