HTMLPurifier: как разрешить один атрибут без переопределения всего белого списка

Я использую HTMLPurifier для очистки строки HTML (это касается безопасности).

Некоторые атрибуты (например, width или height) удаляются при вызове HTMLPurifier. Я не считаю это проблемой безопасности.

Как добавить этот атрибут без переопределения белого списка?

Я искал документацию Stackoverflow и HTMLPurifier, но кажется, что единственное решение:

$config->set('HTML.Allowed', 'p,b,a[href],i');

Но это не решение, потому что я не хочу переопределять белый список (я доверяю конфигурации HTMLPurifier по умолчанию, я просто хочу добавить исключение).


person rap-2-h    schedule 03.07.2012    source источник


Ответы (3)


Этот код:

<?php

require('purifier/library/HTMLPurifier.auto.php');

$html = "<img width='200' height='200' src='test.jpg' alt='bla>";
$config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);
echo $purifier->purify($html) . "\n";

$html = "<table width='100'><tr><td>test</td></tr></table>";
echo $purifier->purify($html) . "\n";

?>

Производит этот вывод:

<img width="200" height="200" src="test.jpg" alt="bla" />
<table width="100"><tr><td>test</td></tr></table>

Использование php 5.3.10 и HTMLPurifier версии 4.4.0. Таким образом, эти атрибуты не удаляются по умолчанию (я использую чистую установку HTMLPurifier).

Для каких элементов HTML вы используете атрибуты ширины/высоты?

Также обратите внимание, что недопустимые атрибуты будут удалены при использовании xhtml strict. Насколько мне известно, ширина и высота элементов img и table разрешены, но должны быть строчными. За исключением "width='100%'" в элементе изображения (добавлено для полноты после rap-2-h его комментария)

В общем: используйте addAttribute вместо белого списка для добавления разрешенных атрибутов.

person Willem Joosten    schedule 10.07.2012
comment
Also note invalid attributes will be stripped when using xhtml strict --› Хорошо, спасибо! Я использовал width="100%", и это недействительно. - person rap-2-h; 10.07.2012
comment
В общем: используйте addAttribute вместо белого списка, чтобы добавить разрешенные атрибуты. --> Большое спасибо ! Вот и все ! - person rap-2-h; 10.07.2012

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

Настройки белого списка:

a.class,
a.href,
a.id,
a.name,
a.rev,
a.style,
a.title,
a.target,
a.rel,
abbr.title,
acronym.title,
blockquote.cite,
div.align,
div.style,
div.class,
div.id,
font.size,
font.color,
h1.style,
h2.style,
h3.style,
h4.style,
h5.style,
h6.style,
img.src,
img.alt,
img.title,
img.class,
img.align,
img.style,
img.height,
img.width,
li.style,
ol.style,
p.style,
span.style,
span.class,
span.id,
table.class,
table.id,
table.border,
table.cellpadding,
table.cellspacing,
table.style,
table.width,
td.abbr,
td.align,
td.class,
td.id,
td.colspan,
td.rowspan,
td.style,
td.valign,
tr.align,
tr.class,
tr.id,
tr.style,
tr.valign,
th.abbr,
th.align,
th.class,
th.id,
th.colspan,
th.rowspan,
th.style,
th.valign,
ul.style
person trkest    schedule 28.05.2013
comment
Спасибо. это обновленный список (в разделе Элементы) - person Accountant م; 14.08.2017

Отключите магические кавычки.

person Edward Z. Yang    schedule 03.07.2012
comment
Почему ? Я не понимаю вашего ответа... Можете ли вы объяснить еще немного? - person rap-2-h; 03.07.2012
comment
htmlpurifier.org/docs#toclink5 мои атрибуты таинственным образом исчезают - person Edward Z. Yang; 05.07.2012
comment
Спасибо, я этого не знал! Но волшебные кавычки уже отключены. Мой вопрос: как разрешить один атрибут без переопределения всего белого списка (или это возможно!) - person rap-2-h; 06.07.2012