Разработчикам⚓︎
При создании плагина или темы для Grav важно не только следовать передовым методам, но и учитывать, открывает ли ваша работа какие-либо пути атаки для потенциальных злоумышленников на сайт. Поскольку Grav представляет собой CMS с плоскими файлами и зависит от нескольких зависимостей, она по своей природе более безопасна, чем аналогичные системы, но небезопасные каналы могут быть созданы непреднамеренно.
Лучшие практики⚓︎
Это несколько рекомендаций о том, как лучше всего создать безопасное и заслуживающее доверия расширение для Grav, и их следует считать необходимыми знаниями для любого автора темы или плагина.
- При написании Twig-шаблонов, выводящих информацию, отправленную пользователем, всегда экранируйте ввод, сюда также входят активы.
- PHP-код должен дезинфицировать ввод и вывод.
- В чертежах следует отдавать предпочтение предустановленным параметрам: по возможности предоставляйте пользователю набор вариантов, а не исходный ввод.
- Помните о том, как использование памяти и процессора влияет на расширение, и избегайте необоснованного использования системных ресурсов.
- Используйте экосистему функций и процедур Grav вместо того, чтобы писать непроверенный код, и подумайте о проверенных в боях сторонних библиотеках, если вам нужно больше.
- Не используйте небезопасные PHP-функции. Также прочтите собственные рекомендации PHP и руководство Консорциума безопасности PHP по этой теме.
- Используйте специфичные для ошибок исключения, а не отчёты об ошибках, когда сценарий должен завершиться ошибкой. Никогда не включайте данные пользователя, установки или системы в исключения или общедоступную отладку.
Плоская CMS⚓︎
Grav имеет ограниченные требования, и, в частности, её архитектура плоских файлов устраняет необходимость в базе данных. Это полезно, потому что общим вектором атаки является база данных системы. Санитарная обработка и защита входных данных — намного более сложная задача, когда вся CMS полагается на базу данных, а атаки с использованием SQL-инъекций могут автоматически пытаться выполнить SQL-операторы даже на удаленных хостах.