В данном коммите произведена масштабная переработка логики отображения страниц (modules/Pages/__call/Show.inc) с упором на повышение безопасности и надежности:
Защита от удаленного выполнения кода (RCE): Для типа страницы 3 полностью удалено использование функции eval(). Выполнение произвольного PHP-кода из базы данных отключено с выбросом критической ошибки.
Защита от XSS и Open Redirect:
Для типа 1 (iframe) добавлена валидация URL (разрешены только абсолютные ссылки http/https и строгие относительные пути). Путь теперь безопасно экранируется через htmlspecialchars, что исключает атаки через javascript: или data: URI.
Для типа 2 (JSредирект) внедрена аналогичная валидация URL, а переменная безопасно передается в JSкод с использованием json_encode.
Защита от Path Traversal: В главном методе Exec добавлена проверка идентификатора страницы ($idpage) на наличие последовательности .., что предотвращает чтение произвольных файлов.
Безопасный динамический вызов: В обработчиках типов 4 и 5 перед выполнением динамически запрошенных методов ($m>$mn() и $pageClass>Show()) добавлена проверка is_callable().
Типизация и стандартизация кода: Для методов ShowType* добавлены строгие тайп-хинты (ObjectDataRecord, ObjectData, object). Произведено форматирование кода в соответствии со стандартами (исправлены отступы и скобки).
1. Связанные задачи
1.1. 🔗 Соответствует задача: I128-2420
[I128-2420] Возможность устанавливать права доступа и иерархию страниц модулей ?id=Modulename/PageName
Статус: Открытая задача | Автор: Ilya Mikhaylenko