Что делает HTML-очиститель для безопасного программирования PHP?
Я изучаю лучшие методы защиты PHP и, в частности, HTML очиститель.
Мне нравится идея использования сторонней библиотеки, чтобы помочь повысить безопасность моих сайтов, но я смущен несколькими вещами...
-
Во-первых, общий вопрос... Что делает HTML Purifier для того, чтобы практиковать безопасное программирование на PHP не может?
-
Если я использую HTML Purifier, значит ли это, что я пропускаю общие меры безопасности, например, используя PHP-функции для фильтрации ввода и выхода?
-
Один из ответов на этот вопрос, похоже, предполагает, что очиститель HTML необходим только для элементов, которые позволяют HTML-теги, такие как редакторы WYSIWYG. Правильно ли это?
-
Кто-нибудь заметил отставание в производительности от использования HTML-очистителя? В этой статье кажется, что влияние производительности стоит рассмотреть.
-
Есть ли современные учебники по интеграции HTML Purifier с не-фреймворческим PHP-приложением? Все, что я нашел, либо old, либо framework-specific.
Просто чтобы подтвердить, что я сделал домашнее задание, прежде чем спрашивать об этом...
Ответы
Ответ 1
При принятии любого ввода от ваших пользователей есть две крайности:
- Без разбора исключить все элементы HTML, чтобы пользователь не мог ничего вводить. Это на 100% безопасно, но позволяет пользователю свободно добавлять HTML-код, например, для текста полужирный и т.д.
- Вывести содержимое, полученное от пользователя. Это позволяет пользователю <b> полужирный текст </b> , но также использовать сценарии или помешать вашему HTML в любой другой форме, которую пользователь желает, намеренно или непреднамеренно.
HTML-очиститель позволяет использовать среднюю площадку: разрешить пользователю вводить некоторый HTML-код, но не вредоносный HTML-код. Разумеется, это беспорядочная попытка, но HTML-очиститель, по-видимому, является одной из немногих библиотек, если не единственной, что делает это правильно.
Это единственное, для чего оно должно быть использовано. Не оставляйте другие методы безопасности. Фактически, я бы полностью избежал всей проблемы, разрешив пользователям использовать только контролируемый язык разметки для их стилизации, например Markdown (который использует Stackoverflow).