¿Cómo permitir ciertas tags html?

Obtuve un área de texto donde el usuario puede escribir un artículo. El artículo puede contener texto (negrita y cursiva), enlaces y videos de youtube. ¿Cómo permito esas ciertas tags html y aún publico un código seguro de prevención de xss?

Usaría HTMLPurifier para asegurarme de que solo conserve HTML

  • Eso es válido
  • y solo contiene tags y atributos que ha elegido para permitir

Debo añadir que PHP proporciona la función strip_tags() , pero no es tan bueno (citando) :

Debido a que strip_tags() realidad no valida el HTML, las tags parciales o rotas pueden resultar en la eliminación de más texto / datos de lo esperado.

Esta función no modifica ningún atributo en las tags que permite usar allowable_tags , incluidos los atributos de estilo y onmouseover que un usuario travieso puede abusar al publicar texto que se mostrará a otros usuarios.

Si está buscando una protección XSS real, le sugiero usar HTMLPurifier . Hacerlo usted mismo es bastante difícil, si no imposible de hacer. Y está destinado a tener errores (/ agujeros) en él.