Middle Безопасность Обязательно

XSS: экранирование вывода и Sanitizer

Защита от межсайтового скриптинга реализуется экранированием пользовательских данных при выводе через \Bitrix\Main\Text\HtmlFilter::encode() или htmlspecialcharsbx(). Если требуется сохранить безопасное HTML-форматирование текста, входящий контент валидируется парсером CBXSanitizer по строгому белому списку разрешенных тегов и атрибутов.

Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.

Что нужно понимать

  • 1
    Экранирование вывода
  • 2
    htmlspecialcharsEx()
  • 3
    Content Security Policy
  • 4
    Очистка HTML
  • 5
    Белые списки тегов
  • 6
    Фильтрация атрибутов

Материалы

Официальная документация

Проверь себя

Менеджер открыл самописный отчёт по заказам, и у него выполнился чужой скрипт. Где искать причину?

В шаблоне отчёта: поле заказа выведено без htmlspecialcharsbx() или HtmlFilter::encode(). Хранимый XSS срабатывает при повторном выводе данных, чаще всего на кастомных админских страницах, которые считают «своими».

Чем htmlspecialcharsEx() отличается от htmlspecialcharsbx() и почему дока советует первую избегать?

htmlspecialcharsEx() работает по чёрному списку и не трогает одинарную кавычку, поэтому атрибут в одинарных кавычках можно закрыть. htmlspecialcharsbx() экранирует полный набор спецсимволов.

Почему на странице появилось < вместо тега, хотя код экранирует один раз?

GetNext() старого API уже прогнал поля через htmlspecialcharsEx() и оставил сырые значения в ключах с тильдой. Экранировать нужно ~NAME, а NAME выводить как есть.

Что сломается, если санитайзер применять на выводе, а не при сохранении?

Скорость: CBXSanitizer разбирает HTML на каждом хите, на списке описаний это заметно. Зато при смене белого списка старые записи очищаются по новым правилам, а при санитизации на входе их придётся перечистить.

Не сходится?

Спросите ассистента BXMax: он знает документацию и материалы сайта по этой теме.

Знаете материал лучше?

Предложите ссылку: после проверки она появится в этом разделе.

Войти, чтобы предложить
Поделиться в Telegram
Мы используем файлы cookie для улучшения работы сайта. Продолжая использовать сайт, вы соглашаетесь с нашей политикой конфиденциальности.
AI Домовой

AI Домовой История

на связи

пишет…
Нет истории чатов
AI Домовой

Нужна авторизация

Войдите, чтобы задавать вопросы AI Домовому.

Войти