Как разрешить определенные теги html?

У меня есть текстовое поле, где пользователь может написать статью. Статья может содержать текст (жирный и курсив), ссылки и видеоролики YouTube. Как разрешить эти определенные теги html и по-прежнему отправлять безопасный код, предотвращающий xss?

Я бы использовал HTMLPurifier , чтобы вы только сохраняли HTML

  • Это действительно
  • и содержит только теги и атрибуты, которые вы выбрали, чтобы разрешить

Я должен добавить, что PHP предоставляет strip_tags() , но это не так хорошо (цитирование) :

Поскольку strip_tags() фактически не проверяет HTML, частичные или сломанные теги могут привести к удалению большего количества текста / данных, чем ожидалось.

Эта функция не изменяет никаких атрибутов в тегах, которые вы разрешаете использовать allowable_tags, включая атрибуты стиля и onmouseover, которые может оскорбительный пользователь может злоупотреблять при публикации текста, который будет показан другим пользователям.

Если вы ищете реальную защиту XSS, я предлагаю использовать HTMLPurifier . Сделать это самостоятельно довольно сложно, если не невозможно. И должен иметь ошибки (/ дыры) в нем.