Intereting Posts
PHP: возвращение пользователя на исходную страницу после входа в систему Советы по управлению большим количеством файлов? Могу ли я использовать график api для Facebook, чтобы получить фотографии профилей друзей пользователей? htaccess Redirect Folder без уничтожения того, что до запроса папки Функция PHP mail (), отправляющая дубликат (пустой) адрес электронной почты Android: как сделать мой извлеченный (из mysql) анализируемые данные JSON, добавленные в ListView, обновить его каждую минуту Получите идентификатор определенного URL-адреса внутри сообщения и сохраните его в переменной Вкладка приложения Facebook -> Внешнее связывание с PHP Как добиться такого же поведения в Ajax Выполнить php-код в Python Неправильная загрузка нескольких изображений Является ли мой IP-адрес в моей базе данных, если так найти временную метку Почему использование подготовленного оператора mysql более безопасно, чем использование общих функций эвакуации? Symfony2: токен CSRF недопустим. Попробуйте повторно отправить форму вызов функции php в моем коде с нажатием на изображение

Как разрешить HTML в белом списке с помощью PHP

Я знаю, что много лет обсуждают лучшие методы фильтрации данных с PHP, но я хотел бы перейти в белый проект в моем текущем проекте.

Я хочу, чтобы пользователь мог использовать следующий HTML-код

<b>bold</b> <i>italics</i> <u>underline</u> <s>strikethrough</s> <big>Big size</big > <small>Small size</small> Hyperlink <a href="http://www.site.com">website</a> A Bulleted List: <ul> <li>One Item</li> <li>Another Item</li> </ul> An Ordered List: <ol> <li> First Item</li> <li> Second Item</li> </ol> <blockquote>Because it is indented</blockquote> <h1>Heading 1</h1> <h2>Heading 2</h2> <h3>Heading 3</h3> 

Может ли кто-нибудь показать мне лучший способ сделать это для производительности в PHP? Я только в прошлом разрешал все html минус определенные коды

    Простейшим решением будет strip_tags(), который принимает второй аргумент, содержащий допустимые теги:

     strip_tags($string, "<b><i><u><a><s><big><small><ul><li><ol><blockquote><h1><h2><h3>"); 

    Я считаю, что библиотека очистителя HTML будет работать красиво:

    http://htmlpurifier.org/

    HTML Purifier – это стандартная библиотека фильтров HTML, написанная на PHP. HTML-очиститель не только удалит весь вредоносный код (более известный как XSS) с тщательно проверенным, безопасным, но и разрешенным «белым списком», он также гарантирует, что ваши документы совместимы со стандартами, что только достижимо с полным знанием спецификаций W3C. Устали от использования BBCode из-за нынешнего ландшафта дефицитных или небезопасных HTML-фильтров? У вас есть редактор WYSIWYG, но он никогда не смог его использовать? Ищете высококачественные, совместимые со стандартами компоненты с открытым исходным кодом для того приложения, которое вы создаете? Очиститель HTML для вас!

    Другой маршрут использует strip_tags со вторым аргументом.

    http://php.net/manual/en/function.strip-tags.php

    Я бы выполнил представленный код в порядке, чтобы сначала его нормализовать, а затем использовать xpath или применить xslt для выбора только разрешенных элементов. Таким образом, ничто не может просачиваться. Помните также, что в любой ситуации с сайтом вы, вероятно, будете иметь тысячи, если не сотни тысяч запросов на чтение для каждого запроса на запись [который использует tidy и xpath / xslt], поэтому в среднем влияние производительности незначительно. Если вы выполняете пакетную обработку, с другой стороны.

    Изменить: oh и: НЕ делать это с помощью регулярных выражений. Математически невозможно сделать это правильно.