2012-07-03 12 views
9

Estoy usando HTMLPurifier para desinfectar la cadena HTML (se trata de seguridad).HTMLPurifier: Cómo permitir un solo atributo sin redefinir toda la lista blanca

Algunos atributos (como width o height) se eliminan cuando se llama a HTMLPurifier. No considero esto como un problema de seguridad.

¿Cómo puedo agregar este atributo sin redefinir la lista blanca?

He buscado en la documentación Stackoverflow y HTMLPurifier, pero la única solución parece ser:

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

Pero esto no es una solución, porque no quiero volver a definir la lista blanca (Confío en que el defecto HTMLPurifier configuración, solo quiero agregar una excepción).

Respuesta

3

este código:

<?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"; 

?> 

produce esta salida:

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

usando PHP 5.3.10 y HTMLPurifier versión 4.4.0. Por lo tanto, estos atributos no se eliminan de manera predeterminada (estoy usando una instalación limpia de HTMLPurifier) ​​

¿En qué elementos HTML está utilizando los atributos width/height?

También tenga en cuenta que los atributos no válidos se eliminarán al usar xhtml strict. El ancho y el alto en los elementos img y table están permitidos hasta donde yo sé, pero deben ser minúsculos. Excepto por "ancho = '100%'" en un elemento de imagen (agregado para compleción después de rap-2-h su comentario)

En general: use addAttribute en lugar de la lista blanca para agregar atributos permitidos.

+0

'También tenga en cuenta que los atributos no válidos se eliminarán cuando se use xhtml strict' -> Ok, ¡gracias! Utilicé 'width =" 100% "' y no es válido. –

+0

"En general: use addAttribute en lugar de la lista blanca para agregar atributos permitidos". -> ¡Muchas gracias! Eso es ! –

0

Desactive las comillas mágicas.

+0

¿Por qué? No entiendo tu respuesta ... ¿Puedes explicar un poco más? –

+0

http://htmlpurifier.org/docs#toclink5 ver "mis atributos desaparecen misteriosamente" –

+0

¡Gracias, no sabía eso! Pero las citas mágicas ya están desactivadas. Mi pregunta es "Cómo permitir un solo atributo sin redefinir toda la lista blanca" (¡o es posible!) –

5

Encontré el mismo problema y la única solución fue pegar en los estilos de la lista blanca en la configuración del atributo agregar HTML purificador.

Los ajustes están en la lista blanca:

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 
+0

Gracias. esta es una [lista actualizada] (http://htmlpurifier.org/live/smoketests/printDefinition.php) (en la sección de Elementos) –

Cuestiones relacionadas