Изменение разрешенных тегов htmlpurifier для этой разметки - PullRequest
5 голосов
/ 03 июня 2011

Мои настройки очистителя HTML теперь разрешают только эти теги

$configuration->set('HTML.Allowed', 'p,ul,ol,li');

Я хочу разрешить отступ списков, и мой редактор использует этот HTML

<ul style="margin-left: 40px;">

Как мне изменить теги HTMLPurifier Allowed? Я думал добавить style, но я думаю, что было бы лучше указать, какой именно стиль разрешен, который в этом случае будет margin-left. Как правильно изменить HTML. Разрешено для этого случая?

Ответы [ 4 ]

18 голосов
/ 03 июня 2011

Разрешить атрибуты стиля, а затем изменить разрешенные атрибуты CSS, используя % CSS.AllowedProperties .

$configuration->set('HTML.Allowed', 'p,ul[style],ol,li');
$configuration->set('CSS.AllowedProperties', 'margin-left');

P.S. Я удивлен, как много людей не понимают, как работает HTML Purifier.

1 голос
/ 03 июня 2011

Я предлагаю вам вообще не разрешать атрибуты.Разрешение атрибута style вызывает уязвимость XSS в IE7 (и, возможно, в других версиях, я не уверен в данный момент), но дело в том, что это слишком опасно.Вы должны разобрать HTML самостоятельно и заменить пользователей постоянными строками в вашем коде.Разрешение HTML - это действительно опасная практика.Для большей безопасности вы можете попробовать что-то вроде разметки или создать свой собственный очень простой язык разметки (например, BBcode) для пользователей.

1 голос
/ 03 июня 2011

Как сказал СамТ в отношении уязвимости XSS в IE7, будьте осторожны с разрешением доступа к атрибуту стиля из-за гениального шага Microsoft, позволившего использовать javascript в CSS с помощью «expression ()» (также известного как Dynamic Properties).).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>

Выше было быоткройте окно предупреждения javascript в MSIE с 5 по 7. Согласно документам MSDN, оно также должно работать в IE8, когда активен режим Quirks.Это также может произойти в IE9 в режиме причуд, но я не уверен.

Если это вообще возможно, избегайте доступа к атрибуту style.Вы никогда не знаете, когда другой грядущий браузер получит гениальную идею добавить в ту же ошибку, которую сделала Microsoft.

1 голос
/ 03 июня 2011

Как минимум, вы хотите разрешить атрибуты для тегов, которые поддерживает очиститель, например:

$configuration->set('HTML.Allowed', 'p,ul[style],ol,li');

Я не уверен, что вы также можете разрешить / ограничить содержание атрибутов.

...