Перейти к содержанию

Разработчикам⚓︎

При создании плагина или темы для Grav важно не только следовать передовым методам, но и учитывать, открывает ли ваша работа какие-либо пути атаки для потенциальных злоумышленников на сайт. Поскольку Grav представляет собой CMS с плоскими файлами и зависит от нескольких зависимостей, она по своей природе более безопасна, чем аналогичные системы, но небезопасные каналы могут быть созданы непреднамеренно.

Лучшие практики⚓︎

Это несколько рекомендаций о том, как лучше всего создать безопасное и заслуживающее доверия расширение для Grav, и их следует считать необходимыми знаниями для любого автора темы или плагина.

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

Плоская CMS⚓︎

Grav имеет ограниченные требования, и, в частности, её архитектура плоских файлов устраняет необходимость в базе данных. Это полезно, потому что общим вектором атаки является база данных системы. Санитарная обработка и защита входных данных — намного более сложная задача, когда вся CMS полагается на базу данных, а атаки с использованием SQL-инъекций могут автоматически пытаться выполнить SQL-операторы даже на удаленных хостах.