По общему принципу ошибочно включать пользовательский (или вообще любой внешний) контент на вашу страницу напрямую без проверки или фильтрации. Помимо возникновения ошибок валидации, это также может привести к «сломанным страницам» и большим дырам в безопасности (межсайтовые скриптовые атаки).
Всякий раз, когда вы получаете данные из в любом месте , которым не доверяют на 100%, вам необходимо каким-то образом обеспечить их безопасность. Вы можете сделать это, выполнив некоторые или все из:
- Экранирование текстовых данных, так что специальные символы заменяются представляющими их сущностями HTML.
- Удаление или фильтрация небезопасных тегов HTML.
- Проверка того, что HTML не содержит небезопасных или незаконных конструкций.
Если ваш пользовательский ввод должен интерпретироваться как текст, то вы в основном смотрите на вариант 1; если вы позволяете пользователям использовать HTML, тогда вы смотрите на варианты 2 и 3. Четвертый вариант - это заставить пользователей использовать более ограничительную не HTML-разметку, такую как Markdown или bbCode, переводя эту разметку в HTML с библиотека, которая (надеюсь) не позволяет внедрять дыры в безопасности, конструкции разрыва страниц или другие страшные вещи.