Как вывести недоверенную строку обычным текстом в виджете

Если виджет должен показать обычный текст из URL, формы или внешнего ответа, выводи его как текст, не превращая в разметку. Сначала найди источник строки и место использования. Для HTML, адреса ссылки, стиля и кода нужны разные решения. Ни знакомый поставщик данных, ни возможность добавить свой код не подтверждают безопасную обработку автоматически.
Проследи строку от источника до вывода
Составь список входов: параметры адреса, поля формы, сохранённые значения, ответы внешних сервисов. Для каждого укажи, где строка оказывается на странице. Важно не только происхождение, но и конечная операция: текстовая надпись, HTML, адрес перехода или исполняемый код.
OWASP описывает DOM XSS как риск небезопасной обработки данных в браузере и связывает защиту с конкретным контекстом вывода. Для отображаемого текста рекомендуются безопасные текстовые операции, включая textContent, вместо интерпретации строки как HTML.
| Назначение | Подход | Граница |
|---|---|---|
| Обычное пояснение | Вывести как текст через предназначенный для этого API | Строка не должна становиться HTML |
| Адрес кнопки | Проверить допустимые адреса и схемы отдельным правилом | Текстовый вывод не делает произвольный URL допустимым |
| Разрешённое форматированное содержание | Отдельно определить разрешённую разметку и проверенную очистку | Одной проверки длины недостаточно |
| Исполняемая логика | Не превращать внешнюю строку в код | Очистка HTML не разрешает выполнение строки |
Для каждого места запиши фактическую операцию. Если внешняя строка собирается в HTML-шаблон, назначается через innerHTML или передаётся в выполнение, передай этот поток на предметный разбор. Не считай удаление одного опасного слова достаточным правилом.
Для обычной надписи используй текстовый вывод
const message = 'Условный вопрос по каталогу';
const output = document.createElement('p');
output.textContent = message;
document.body.append(output);В этом примере message передаётся в textContent. Смысл операции — показать строку, не разбирать её как фрагмент разметки. Если задача состоит только в подписи, не нужен более сильный механизм HTML. Содержимое самой строки всё равно должно соответствовать продуктовому смыслу: безопасный вывод не подтверждает достоверность написанного.
На своей локальной странице проверь обычные слова, кавычки, амперсанд, кириллицу и строки, похожие на разметку. Они должны оставаться видимым текстом, а не создавать новые элементы или менять действие кнопки. Отдельно проверь пустое и длинное значение: безопасная интерпретация не гарантирует удобную длину.
Разрешённый HTML — отдельная задача
Иногда содержание действительно требует форматирования. Тогда зафиксируй, какие элементы и атрибуты разрешены, кто задаёт это правило и каким поддерживаемым средством выполняется очистка. Не используй самодельное удаление отдельных фрагментов как универсальную защиту. После очистки дальнейшие преобразования тоже нужно учитывать.
HTML-очистка и выполнение JavaScript — разные контексты. OWASP отдельно предупреждает о смешении этих задач. Если строка становится обработчиком, стилем или адресом, нельзя объявить её безопасной только потому, что она прошла текстовый фильтр.
Если форматирование не является необходимым, оставь обычный текст. Если допустимый HTML и проверенная обработка не определены, не выпускай такую ветку как готовую. Исправь конкретный поток данных и повтори локальные проверки, не делая вывода о всей системе.
В редакторе Кирпича есть возможность добавлять свой код. Она не является обещанием изоляции произвольного кода или безопасности любой внешней строки. Содержание и поведение собственной реализации требуют проверки.

Проверь поток данных в своём фрагменте
Проверка вывода текста
Найти конкретные источники и места интерпретации без выдуманного балла безопасности.
Отметь выполненные проверки. Итог показывает оставшиеся действия, а не оценку качества бизнеса.
Перечисли входы и контексты. Обычный текст выводи текстовой операцией и проверь локальные строки. HTML обрабатывай только по отдельному правилу; адреса, стили и код не считаются защищёнными тем же способом. Результат относится к конкретным проверенным потокам.
Передай исправление с точной границей
В отчёте нужны источник, операция до изменения, операция после, локальный пример и наблюдение. Отдельно проверь, не осталось ли второго места вывода той же строки. Ограничение длины, смысловая проверка значения и правила адресов дополняют работу, но не заменяют выбор безопасного контекста.
Источники и документация
- DOM based XSS Prevention Cheat Sheet · проверено 11.10.2026
- Аналитика с ИИ для B2B-сайтов · проверено 11.10.2026