Я хочу предоставить 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 использует такое решение.
В дополнение к сообщению Whymarrh, предложение заключается в том, чтобы работа с кодом выполнялась в подпапке вашего сайта и автоматически изменяла любой код, который имеет «..» или «http: //» или любые команды mysql.