Принимая любые входные данные от ваших пользователей, возможны две крайности:
- Беспорядочно экранировать все в HTML-сущности, поэтому пользователь ничего не может внедрить. Это на 100% безопасно, но не дает пользователю никакой свободы добавлять любой HTML, например, для полужирного текста и т. П.
- Вывести содержимое, как вы получили его от пользователя. Это позволяет пользователю полужирный текст , а также вводить сценарии или связываться с вашим HTML в любой другой форме, которую пользователь желает, преднамеренно или непреднамеренно.
HTML Purifier обеспечивает золотую середину: позволяет пользователю вводить некоторый HTML, но не вредоносный HTML. Это, конечно, грязная вещь, но HTML Purifier - одна из немногих библиотек, если не единственная, которая делает это правильно.
Это единственное, для чего он должен использоваться. Не отказывайтесь от других мер безопасности. Фактически, я бы полностью избежал этой проблемы, позволив пользователям использовать только стилизованный язык разметки для стилизации своего ввода, например Markdown (который использует Stackoverflow).