Skip to content

Security: frontcamp/coffium

Security

docs/security.md

Безопасность

Этот документ содержит рекомендации по повышению безопасности системы на базе фреймворка Coffium в стандартной комплектации.

Чеклист безопасности

Список пунктов, которые нужно выполнить для повышения безопасности. Подробно эти же пункты описаны в следующих разделах.

  • изменить ключ VIP доступа в cfg.global.php или отключить этот режим;
  • проверка окружения (IS_LOCAL/IS_DEV/IS_PROD);
  • переименовать каталог административного интерфейса /coms/admin;
  • учитывать общие рекомендации безопасности.

Ядро системы

В ядре есть механизм VIP-доступа, который включает дополнительные отладочные возможности для администраторов, тестеров и разработчиков. Он описан в /docs/core.md в разделах «Инициализация системы» и «Отладка и VIP режим».

Сразу после установки системы в файле конфигурации cfg.global.php следует изменить значение константы:

define('VIP_MODE_KEY', 'projkeeper');

или оставить пустую строку чтобы отключить этот режим вообще. Рекомендуется периодически (например, раз в сезон) менять значение ключа и сообщать его только действующим участникам команды, чтобы доступ к VIP-возможностям не оставался у временных или уволенных сотрудников.

Для устранения потенциальных проблем и уязвимостей, сразу после установки системы следует проверить правильность детекции окружения флагами IS_LOCAL/IS_DEV/IS_PROD, они должны правильно идентифицировать тип текущего сервера.

Административный интерфейс

Компонент «административный интерфейс» по умолчанию размещается в каталоге /coms/admin. Для минимизации риска его обнаружения автоматическими сканерами рекомендуется переименовать этот каталог. Например, чтобы переименовать его в manage3r, нужно:

  1. переименовать каталог /coms/admin в /coms/manage3r;
  2. в файле /coms/manage3r/__info__.php изменить значение поля alias на manage3r.

После этого административный интерфейс будет доступен по адресу вида:

https://<hostname>/manage3r/

это резко снижает риск обнаружения для автоматических сканеров, которые перебирают типовые пути (/admin, /manager и т.п.).

Общие рекомендации

  • Ограничить доступ к административному интерфейсу по IP или через VPN.
  • Регулярно проверять права на файлы и каталоги и не разрешать веб-серверу запись в кодовые директории на прод-окружении.
  • Хранить чувствительные данные выше уровня публичных каталогов или использовать микросервисы, расположенные на отдельных серверах.

Рекомендации по разработке

  • использовать htmlspecialchars() для вывода чужих данных;
  • хранить пароли через password_hash() / password_verify();
  • не строить SQL из сырых $_GET/$_POST.

There aren’t any published security advisories