Этот документ содержит рекомендации по повышению безопасности системы на базе фреймворка 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, нужно:
- переименовать каталог
/coms/adminв/coms/manage3r; - в файле
/coms/manage3r/__info__.phpизменить значение поляaliasнаmanage3r.
После этого административный интерфейс будет доступен по адресу вида:
https://<hostname>/manage3r/
это резко снижает риск обнаружения для автоматических сканеров, которые перебирают типовые пути (/admin, /manager и т.п.).
- Ограничить доступ к административному интерфейсу по IP или через VPN.
- Регулярно проверять права на файлы и каталоги и не разрешать веб-серверу запись в кодовые директории на прод-окружении.
- Хранить чувствительные данные выше уровня публичных каталогов или использовать микросервисы, расположенные на отдельных серверах.
- использовать
htmlspecialchars()для вывода чужих данных; - хранить пароли через
password_hash()/password_verify(); - не строить SQL из сырых
$_GET/$_POST.