Настройки html-очистителя теперь позволяют только эти теги
$configuration->set('HTML.Allowed', 'p,ul,ol,li');
Я хочу разрешить отступы списков, и мой редактор использует этот html
<ul style="margin-left: 40px;">
Как мне изменить допустимые теги HTMLPurifier? Я думал добавить style
, но я думаю, что было бы лучше указать, какой именно стиль разрешен, что в этом случае будет margin-left
. Каков правильный способ изменения HTML. В этом случае?
Разрешите атрибуты стиля, а затем измените разрешенные атрибуты CSS, используя % CSS.AllowedProperties .
$ configuration-> set ('HTML.Allowed', 'p, ul [style], ol, li'); $ configuration-> set ('CSS.AllowedProperties', 'margin-left');
PS Я удивлен, как многие люди не понимают, как работает очиститель HTML.
По крайней мере, вы хотите разрешить атрибуты для тегов, которые поддерживает очиститель, например:
$configuration->set('HTML.Allowed', 'p,ul[style],ol,li');
Я не уверен, что вы также можете разрешить / ограничить содержимое атрибутов.
Я предлагаю вам не разрешать атрибуты вообще. Разрешение атрибута style вызывает уязвимость XSS в IE7 (и, возможно, другие версии, на данный момент я не уверен), но дело в том, что это слишком опасно. Вы должны сами проанализировать HTML-код и заменить константы пользователя в своем коде. Разрешение HTML – действительно опасная практика. Для лучшей безопасности вы можете попробовать что-то вроде уценки или создать свой собственный очень простой язык разметки (например, BBcode) для ваших пользователей.
Как и SamT, относительно уязвимости XSS в IE7, будьте осторожны, чтобы разрешить доступ к атрибуту стиля из-за гениального перемещения Microsoft, что позволило использовать javascript в CSS с помощью выражения () (также называемого динамическими свойствами). http://msdn.microsoft.com/en-us/library/ms537634(v=vs.85).aspx
Что касается его удаления в IE8, где Microsoft откровенно признает, что он подвергал пользователей дополнительным уязвимостям: http://blogs.msdn.com/b/ie/archive/2008/10/16/ending-expressions.aspx
пример:
<a href="" style="width: expression(alert('XSS'));">blah</a>
Вышеприведенное окно появится в окне MSI 5-7. В соответствии с документами в MSDN он также должен работать на IE8, когда режим Quirks активен. Это также может произойти и в IE9 в режиме quirks, но я не могу быть уверен.
Если это вообще возможно, избегайте доступа к атрибуту стиля. Вы никогда не знаете, когда другой будущий браузер получит гениальную идею, чтобы добавить ту же ошибку, что и Microsoft.