Отображение пользовательского ввода на моей странице

В нашем приложении мы позволяем пользователю писать свою биографию с помощью редактора WYSIWYG, но он часто содержит плохой HTML, который ломает нашу страницу. Хорошая идея - показывать биографию пользователя внутри iframe, чтобы это не влияло на остальную часть страницы? Или какие-нибудь варианты получше?

Спасибо


person eozzy    schedule 28.02.2010    source источник


Ответы (3)


Это неплохая идея, но почему бы вам не проверить HTML-код перед его сохранением? Или это не плохо, просто некрасиво? У большинства редакторов есть чистое офисное форматирование. Или разрешить ввод HTML - это бизнес-требование?

Но iframe - самый безопасный способ сделать это, я бы сказал, дерзайте!

person cjensen    schedule 28.02.2010


Решением было бы отфильтровать HTML, чтобы убедиться, что он "ОК":

  • Действительный HTML
  • Они содержат только теги, которые вы хотите разрешить
  • И не вызывает никаких проблем с безопасностью.

Отличный инструмент для этого - HTMLPurifier (цитируется):

HTML Purifier - это соответствующая стандартам библиотека HTML-фильтров, написанная на PHP. HTML Purifier не только удалит весь вредоносный код (более известный как XSS) с помощью тщательно проверенного, безопасного, но разрешающего белого списка, он также обеспечит соответствие ваших документов стандартам.

По сути, после того, как HTML был введен пользователем, перед сохранением его в своей базе данных вы должны передать его через HTML Purifier, который убедится, что он действителен, и удалит все теги / атрибуты, которые вы не указали как "разрешено".

person Pascal MARTIN    schedule 28.02.2010