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

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

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

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

Solutions Collecting From Web of "Как отфильтровать Dangerous HTML, например SO?"

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.