Intereting Posts
Тема WordPress Ошибка «Неустранимая ошибка: нельзя повторно назначить авто-глобальную переменную _POST» Удаление повторяющихся данных из массива POST Кнопка входа в Facebook: могу ли я предотвратить перезагрузку страницы после входа в систему? php – является ли strpos самым быстрым способом поиска строки в большом тексте? Laravel 5.1 МетодNotAllowedHttpException для метода хранилища с использованием Resource Controller Подписки WooCommerce – получение связанных заказов Идентификаторы для определенной подписки Использование jQuery .load () для передачи параметра и вызова функции php Регулярное выражение Codeigniter Проблемы с объектом stdClass Javascript onload function alternative Объединение нескольких массивов, сортировка по количеству массивов Одна установка PHP с несколькими файлами php.ini Лучший способ проверить, вернулись ли результаты MySQL в PHP? PHP-MYSQL: преобразование временной отметки Unix в DateTime и наоборот AWS PHP SDK Promise не работает

Как отфильтровать Dangerous HTML, например SO?

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

Это довольно похоже на то, что делает Stack Overflow. Как HTML проверяется / очищается здесь, так что информация о стилизации остается, в то время как другие, более опасные вещи (например, javascript, iframe и т. Д.) Не используются?

Существуют ли какие-либо библиотеки (желательно на PHP), которые уже делают это?

PHP имеет функцию strip_tags которая удаляет теги HTML и PHP из строки и позволяет вам указывать определенные допустимые теги. Но, как утверждает @webarto , есть библиотеки, которые делают это лучше.

Из руководства по PHP .

Вы можете использовать

 strip_tags($yourData,"<a><p><div><i>") // more tags you want to keep; 

Если вы используете SQL слишком

 mysql_real_escape_string($data); 

Это действительно все, что вам не нужно вводить. Имейте в виду, что при использовании реального спасения mySQL вам нужно использовать слэши для удаления, когда вы их эхо.

Вот документы для стрипов и документы для mysql escape .

Если вы хотите разрешить некоторые (X) HTML и ограничивать только те теги, которые считаются небезопасными, вы можете использовать что-то вроде KSES. WordPress использует такое решение.

http://sourceforge.net/projects/kses/

В дополнение к сообщению Whymarrh, предложение заключается в том, чтобы работа с кодом выполнялась в подпапке вашего сайта и автоматически изменяла любой код, который имеет «..» или «http: //» или любые команды mysql.