Skip to content

fix(security): не исполнять теги покупателя в Telegram и SMS - #935

Merged
biz87 merged 1 commit into
betafrom
fix/issue-929-telegram-sms-tags
Oct 19, 2026
Merged

biz87 merged 1 commit into
betafrom
fix/issue-929-telegram-sms-tags

Conversation

@Ibochkarev

Copy link
Copy Markdown
Member

Описание

Шаблоны Telegram и SMS рендерились через getChunk() без маскировки тегов в данных покупателя. Email такую маскировку уже имел.

nonce / neutralize / restore вынесены в TemplateTagGuard. Письмо вызывает тот же класс, порядок сборки темы и тела не менялся. renderTemplate() для Telegram и SMS маскирует значения до getChunk() и возвращает их после. Для Telegram значения дополнительно проходят htmlspecialchars под parse_mode=HTML. SMS остаётся обычным текстом. Штатные сообщения без чанка не трогались.

Тип изменений

  • Исправление бага (non-breaking change)
  • Новая функциональность (non-breaking change)
  • Breaking change (изменение, ломающее обратную совместимость)
  • Рефакторинг (без изменения функциональности)
  • Документация
  • Другое (опишите):

Связанные Issues

Closes #929

Как это было протестировано?

php -l на изменённых PHP-файлах, smoke php tests/EmailTagInjectionGuardTest.php, PHPUnit TemplateTagGuardTest и EmailChannelTagHandlingTest (29 тестов). Полный composer ci:php и PHPStan не запускал.

  • Ручное тестирование
  • Автоматические тесты (composer ci:php / composer test, npm run lint:ci, composer stan / GitHub Actions CI)
  • Тестирование на разных версиях PHP/MODX

Конфигурация тестирования:

  • MiniShop3: ветка beta
  • MODX: не поднимался
  • PHP: 8.2+ локально

Скриншоты (если применимо)

До После

Чеклист

  • Код соответствует стилю проекта
  • Добавлены/обновлены комментарии в сложных местах
  • Изменения не ломают существующую функциональность
  • Лексиконы добавлены на двух языках (ru/en)
  • PHPStan проходит без новых ошибок (composer stan / CI job PHPStan)
  • ESLint проходит без ошибок (npm run lint:ci для Vue)
  • Обновлён CHANGELOG.md (для значимых изменений)

Дополнительные заметки

CHANGELOG не трогал: записи добавляются при подготовке релиза. Лексиконы и Vue не менялись.

#929)

Рендер этих каналов маскирует открывающие последовательности тем же guard, что и письмо. Для Telegram значения ещё экранируются под parse_mode=HTML.
@Ibochkarev
Ibochkarev requested a review from biz87 October 18, 2026 17:49
@biz87
biz87 merged commit 100887b into beta Oct 19, 2026
6 checks passed
@biz87
biz87 deleted the fix/issue-929-telegram-sms-tags branch October 19, 2026 10:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants