XSS и контекстное экранирование
Для HTML-текста используйте htmlspecialchars() с ENT_QUOTES | ENT_SUBSTITUTE и явной UTF-8.
htmlspecialchars($value, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8')Контекст
Один escape не подходит везде. HTML-текст, атрибут, URL, CSS и JavaScript имеют разные правила и безопасные API.
Пример
<?php
echo htmlspecialchars($title, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');HTML из редактора
Если продукт разрешает часть HTML, нужен allowlist sanitizer. Удаление тега script одной регуляркой не защищает от обработчиков, URL-схем и повреждённой разметки.
Playground
Вывод пользовательского PHP в этом сервисе помещается только через textContent и не интерпретируется как HTML.
Связанные материалы
Источники и проверка
- PHP Documentation Group — структурный источник, без внешней ссылки
Последняя содержательная проверка: . Автор-разработчик Михаил Каржин. Методика качества контента.