From c4f9185883771b2c582eb8a44c79a410728062f8 Mon Sep 17 00:00:00 2001 From: Repellent Date: Fri, 9 Jan 2026 23:31:36 +0500 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20user=5Fheader=20=D0=B8=20user=5Ffooter=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D0=B2=D1=81=D1=82=D0=B0=D0=B2=D0=BA=D0=B8=20?= =?UTF-8?q?=D0=BB=D0=B8=D0=BD=D0=BA=D0=BE=D0=B2=20=D0=BD=D0=B0=20css=20?= =?UTF-8?q?=D0=B8=D0=BB=D0=B8=20js=20=D1=84=D0=B0=D0=B9=D0=BB=D0=BE=D0=B2?= =?UTF-8?q?=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.php | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/index.php b/index.php index 6625e1c..c8794ab 100644 --- a/index.php +++ b/index.php @@ -167,6 +167,53 @@ $GLOBALS['block_generate']['DOCUMENT']['CONTENT'] = Debug::endTime('CONTENT'); $GLOBALS['block_generate']['INIT']['CODEEND'] = Debug::endTime('CODEEND'); + // --- ИНЖЕКТОР АССЕТОВ --- + $process_assets = function($asset_array) { + if (empty($asset_array) || !is_array($asset_array)) return ''; + + $clean_assets = []; + foreach (array_unique($asset_array) as $item) { + $item = trim($item); + + // Разрешаем только заголовочные теги + if (!preg_match('/^<(script|link|style|meta|!--|title|base)/i', $item)) continue; + + // Удаляем любые on* атрибуты (onload, onerror и т.д.) + if (preg_match('/on[a-z]+\s*=/i', $item)) continue; + + // DATA: Блокируем всё, кроме безопасных изображений + if (stripos($item, 'data:') !== false && stripos($item, 'image/') === false) continue; + + $clean_assets[] = $item; + } + return implode("\n", $clean_assets); + }; + + // Собираем данные из PHP-кода модулей + $module_header = $process_assets($GLOBALS['user_header'] ?? []); + $module_footer = $process_assets($GLOBALS['user_footer'] ?? []); + + // Вставка в HEADER + if (!empty($module_header)) { + if (strpos($render, '[tag:rubheader]') !== false) { + $render = str_replace('[tag:rubheader]', $module_header . "\n[tag:rubheader]", $render); + } else { + $render = str_replace('', $module_header . "\n", $render); + } + } + + // Вставка в FOOTER + if (!empty($module_footer)) { + if (strpos($render, '[tag:rubfooter]') !== false) { + $render = str_replace('[tag:rubfooter]', $module_footer . "\n[tag:rubfooter]", $render); + } else { + $render = str_replace('', $module_footer . "\n", $render); + } + } + + unset($module_header, $module_footer, $process_assets); + // --- КОНЕЦ БЛОКА ИНЖЕКТОРА --- + //-- Вывод конечного результата output_compress($render);