Подтвердить что ты не робот

Что делает HTML-очиститель для безопасного программирования PHP?

Я изучаю лучшие методы защиты PHP и, в частности, HTML очиститель.

Мне нравится идея использования сторонней библиотеки, чтобы помочь повысить безопасность моих сайтов, но я смущен несколькими вещами...

  • Во-первых, общий вопрос... Что делает HTML Purifier для того, чтобы практиковать безопасное программирование на PHP не может?

  • Если я использую HTML Purifier, значит ли это, что я пропускаю общие меры безопасности, например, используя PHP-функции для фильтрации ввода и выхода?

  • Один из ответов на этот вопрос, похоже, предполагает, что очиститель HTML необходим только для элементов, которые позволяют HTML-теги, такие как редакторы WYSIWYG. Правильно ли это?

  • Кто-нибудь заметил отставание в производительности от использования HTML-очистителя? В этой статье кажется, что влияние производительности стоит рассмотреть.

  • Есть ли современные учебники по интеграции HTML Purifier с не-фреймворческим PHP-приложением? Все, что я нашел, либо old, либо framework-specific.

Просто чтобы подтвердить, что я сделал домашнее задание, прежде чем спрашивать об этом...

4b9b3361

Ответ 1

При принятии любого ввода от ваших пользователей есть две крайности:

  • Без разбора исключить все элементы HTML, чтобы пользователь не мог ничего вводить. Это на 100% безопасно, но позволяет пользователю свободно добавлять HTML-код, например, для текста полужирный и т.д.
  • Вывести содержимое, полученное от пользователя. Это позволяет пользователю <b> полужирный текст </b> , но также использовать сценарии или помешать вашему HTML в любой другой форме, которую пользователь желает, намеренно или непреднамеренно.

HTML-очиститель позволяет использовать среднюю площадку: разрешить пользователю вводить некоторый HTML-код, но не вредоносный HTML-код. Разумеется, это беспорядочная попытка, но HTML-очиститель, по-видимому, является одной из немногих библиотек, если не единственной, что делает это правильно.

Это единственное, для чего оно должно быть использовано. Не оставляйте другие методы безопасности. Фактически, я бы полностью избежал всей проблемы, разрешив пользователям использовать только контролируемый язык разметки для их стилизации, например Markdown (который использует Stackoverflow).