Я сейчас вижу там с filter.
<loc>https://permedcom.ru/catalog/stomatologiya/ortopantomografy/filter/manufacturer-is-sirona%20/</loc>
Nikita4404 кстати обратите внимание в конкретно этом случае %20 в URL - у вас там пробел есть мусорный
т.е. возможно в инфоблоке 31 сейчас у элементов настроен шаблон /catalog/#SECTION_CODE_PATH#/filter/#ELEMENT_CODE#/ - filter вместо tag
Лучше вам обратиться к программисту. На данный момент вы даже проблему описываете явно не правильно.
Я так понимаю у вас реализован функционал теговых страниц. Это не штатный механизм.
Как я понял из описания. У вас настройка теговых страниц находится в отдельном инфоблоке с ИД 31. В сайтмап ни когда не попадают URL настроенные через URL умного фильтра. (тут даже трудно представить сколько займут дискового пространства такие сайтмапы если сформировать. Представьте каталог имеющий тысячу свойств и сколько будет в нем комбинаций? (так для примера кодовый замок 4 цифры от 0 -9 имеет 10000 комбинаций :) а если добавить еещ в каждую позицию кроме цифр букву А то вариантов 14641 )
Далее уже важно как в реальности реализовали у вас генерацию url. Тут надо смотреть в инфоблоке посадочных страниц шаблон URL элементов. т.е. там должно быть что то типа (и это только если реализовано как я предполагаю - но могут быть и варианты)
/catalog/#SECTION_CODE_PATH#/tag/#ELEMENT_CODE#/
Но в этом варианте есть тонкость: подозреваю у вас частенько может "слетать" роутинг из-за изменений в urlrewrite.php. т.к. в этом случае у вас получится в нем шаблон одинаковый с шаблоном маршрута каталога.
В общем как итог: у вас точно НЕ стандартное решение. Т.е. тут надо смотреть конкретно ваш проект и разбираться как реализован этот функционал. Посмотрите в списке установленных модулей (
Не совсем понимаю сути претензии :) Полагаешь что на этот момент не стоило обращать внимания? Сам же пишешь, что "моветон". Имхо логично.
Это вообще не относится ни как к этой оценке . Это уже мое решение. В оценке лишь про гонку указано. что действительно может быть при таком подходе. Но я сознательно забил на это еще когда принимал решение.
Тут суть в моем таком решении. Да можно по дням, можно логротейт настроить. Если честно пока не решил на 100% как в конечном итоге хочу видеть. У каждого подхода есть свои недостатки. по дням у меня тоже были на проектах :). Тут решил так. Все же я сомневаюсь, что завтра гиганты индустрии начнут писать хайлоад проекты на моем фреймворке :) Думаю для данного этапа развития фреймворка решение правильное (не надо парится и знать что надо настроить логротейт или скрипит на крон.... (со скриптами вообще глубже буду продумывать когда буду реализовывать cli сторону фреймворка. вполне возможно там и про чистку/ротацию логов подумаю и прочие "чистки")
Ну тут надо уже искать. я тогда в другой ветке это делал и ее всю схлопнул в один киммит. ну вот маленький пример из отчета
2. Information Disclosure — ExceptionMiddleware отдаёт тексты исключений клиенту (CRITICAL) Файл: src/Middleware/ExceptionMiddleware.php return $this->buildResponse($exception->getMessage()) ->setStatus(ResponseStatus::INTERNAL_SERVER_ERROR); Текст любого исключения (включая \Throwable) напрямую возвращается в HTTP-ответ. Это раскрывает: - Пути файловой системы (Unable to open '/var/www/app/var/log/error.log') - Имена таблиц/колонок БД из будущих SQL-ошибок - Внутренние имена классов и структуру приложения - Потенциально — строки подключения и учётные данные из PDO-исключений Комментарий в коде говорит «фильтрация — ответственность разработчика», но это должно быть безопасным по умолчанию. 3. CSRF-токен в GET-параметрах (HIGH) Файл: src/Middleware/CsrfMiddleware.php $tokenFromRequest = trim( $request->get->getString(self::CSRF_TOKEN_NAME, '') // ← GET параметр! ?: $request->post->getString(self::CSRF_TOKEN_NAME, '') ?: $request->headers->getString(self::CSRF_TOKEN_HEADER, ''), ); CSRF-токен принимается через GET-параметры. Это означает: - Токен попадёт в URL (?csrf_token=abc123...), а значит: - В логи веб-сервера (access.log) - В заголовок Referer при переходе по ссылкам - В историю браузера - В логи прокси-серверов - Это фактически обнуляет CSRF-защиту, так как токен может быть легко перехвачен 8. Ротация логов — гонка и перезапись (MEDIUM) Файл: src/Logging/Handlers/StreamHandler.php if (file_exists($stream) && filesize($stream) > $maxFileSize) { rename($stream, $stream . '.old'); // ← хранится только 1 архив } - Race condition: между file_exists/filesize и rename другой процесс может записать в файл - Хранится только один архивный файл (.old), предыдущий архив удаляется без предупреждения — потеря логов в production - Нет блокировки файла при записи (fwrite без flock) — возможна перемешивание строк логов при конкурентных запросах
Каким образом? С онлайн моделью?
Вот пример из сводки этого отчета
┌─────┬────────────────────────────────────────────┬──────────┬─────────────────────────────┐│ # │ Уязвимость │ Уровень │ Тип (OWASP) │├─────┼────────────────────────────────────────────┼──────────┼─────────────────────────────┤│ 1 │ XSS через HtmlResponse │ CRITICAL │ A03: Injection │├─────┼────────────────────────────────────────────┼──────────┼─────────────────────────────┤│ 2 │ Information Disclosure через тексты │ CRITICAL │ A01: Broken Access Control ││ │ исключений │ │ │