Каков наилучший способ обеспечить безопасный ввод и разрешить некоторые HTML-теги? - PullRequest
1 голос
/ 11 сентября 2011

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

Типичная ситуация - администратор, который хочет написать статью на xss (например,), которая будет храниться в базе данных и будет показана пользователям.Этот администратор мог бы написать теги типа <b> для форматирования текста, но также как <javascript> для объяснения атаки.Если я использую Zend_Filter_StripTags, я могу позволить администратору помещать безвредный HTML-тег, такой как <b>, в текст, но по соображениям безопасности я не могу позволить ему добавлять теги, такие как <javascript>.

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

Кто-нибудь знает лучший метод для решения этой проблемы?

Ответы [ 3 ]

3 голосов
/ 11 сентября 2011

Использование HTML Purifier :

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

2 голосов
/ 11 сентября 2011

Используйте Zend_Filter_HtmlEntities для экранирования всех тегов HTML, а затем используйте Zend_Markup для предоставления форматирования с помощью аннотаций BBCode.

0 голосов
/ 11 сентября 2011

Использовать HTMLPurifier

http://htmlpurifier.org/

Может дезинфицировать вход, а также приводить в порядок HTML

...