<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PHPBSD.net &#187; htmlpurifier</title>
	<atom:link href="http://www.phpbsd.net/tag/htmlpurifier/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.phpbsd.net</link>
	<description>Blogueando sobre PHP, BSD, SEO, AJAX, Seguridad, Rendimiento... y mucho más</description>
	<lastBuildDate>Thu, 07 Oct 2010 11:57:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>HTML Purifier, evita los ataques XSS y valida tu HTML</title>
		<link>http://www.phpbsd.net/2008/01/29/html-purifier-evita-los-ataques-xss-y-valida-tu-html/</link>
		<comments>http://www.phpbsd.net/2008/01/29/html-purifier-evita-los-ataques-xss-y-valida-tu-html/#comments</comments>
		<pubDate>Tue, 29 Jan 2008 18:11:45 +0000</pubDate>
		<dc:creator>Oriol</dc:creator>
				<category><![CDATA[Artículos]]></category>
		<category><![CDATA[htmlpurifier]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[seguridad]]></category>
		<category><![CDATA[webmaster]]></category>
		<category><![CDATA[xss]]></category>

		<guid isPermaLink="false">http://www.phpbsd.net/2008/01/29/html-purifier-evita-los-ataques-xss-y-valida-tu-html/</guid>
		<description><![CDATA[HTML Purifier es una librería para filtrar HTML escrita en PHP que permite eliminar el código malicioso (XSS) a la vez que comprueba que el HTML valide contra el estándar correspondiente.
Una de las principales diferencias de HTML Purifier comparada con otras librerías de filtrado HTML es que descompone por completo el HTML y verifica que [...]


Entradas relacionadas:<ul><li><a href='http://www.phpbsd.net/2007/01/14/capturando-los-fatal-errors-del-php-con-nuestro-handler/' rel='bookmark' title='Permanent Link: Capturando los fatal errors del PHP con nuestro handler'>Capturando los fatal errors del PHP con nuestro handler</a></li><li><a href='http://www.phpbsd.net/2007/02/11/el-mes-de-los-bugs-y-nueva-version-de-php/' rel='bookmark' title='Permanent Link: El mes de los bugs y nueva versión de PHP'>El mes de los bugs y nueva versión de PHP</a></li><li><a href='http://www.phpbsd.net/2007/01/31/transfiriendo-datos-con-la-libreria-curl-en-php/' rel='bookmark' title='Permanent Link: Transfiriendo datos con la librería cURL en PHP'>Transfiriendo datos con la librería cURL en PHP</a></li></ul>]]></description>
			<content:encoded><![CDATA[<p><a target="_blank" href="http://htmlpurifier.org/" title="HTML Purifier - Filter your HTML the standards-compliant way!">HTML Purifier</a> es una librería para filtrar HTML escrita en PHP que permite <strong>eliminar el código malicioso</strong> (<a target="_blank" href="http://es.wikipedia.org/wiki/XSS" title="XSS - Wikipedia, la enciclopedia libre">XSS</a>) a la vez que comprueba que el <strong>HTML valide contra el estándar correspondiente</strong>.</p>
<p>Una de las principales diferencias de HTML Purifier comparada con otras librerías de filtrado HTML es que <strong>descompone por completo el HTML</strong> y verifica que cada uno de los elementos se encuentre dentro de una whitelist de elementos permitidos en lugar de limitarse a buscar elementos prohibidos en una blacklist (normalmente desfasada). A la vez que elimina el código no deseado también hace algo poco común en librerías de este tipo, valida que el HTML cumpla el estándar correspondiente y si no lo cumple realiza las modificaciones necesarias para corregirlo.</p>
<p>Puedes usar HTML Purifier tanto para filtrar datos de entrada, en el caso de que sea posible recibir código HTML, como el HTML de salida de tu aplicación. Lo más frecuente es usarla para filtrar datos de entrada como comentarios, emails, el resultado de algunos editores WYSIWYG, etc.</p>
<p>Se ha de tener presente que dado su funcionamiento interno <strong>es una librería muy potente pero pesada y lenta</strong>, no es para nada recomendable filtrar la salida de tu aplicación cada vez que generas código HTML. Mucho mejor filtrar la entrada y asegurar que el contenido de tu sistema está limpio. En todo caso para filtrar la salida se convierte en algo obligatorio trabajar con algún sistema de cache (<a href="http://www.phpbsd.net/2007/05/16/cache-de-paginas-estaticas-para-php/" title="Cache de páginas estáticas para PHP en PHPBSD.net">generar páginas estáticas</a>, un <a target="_blank" href="http://en.wikipedia.org/wiki/Reverse_proxy" title="Reverse proxy - Wikipedia, the free encyclopedia">reverse proxy</a>, en BD capturando el output-buffer, etc.)</p>
<p>A continuación explico brevemente su instalación y uso.</p>
<h4>Instalación</h4>
<p><strong>[1]</strong> Descargar el archivo <a target="_blank" href="http://htmlpurifier.org/releases/htmlpurifier-3.0.0.tar.gz" title="htmlpurifier-3.0.0.tar.gz">htmlpurifier-3.0.0.tar.gz</a> y descomprimirlo en el servidor. No es necesario que esté accesible para los usuarios, puedes colocarlo fuera del <em>DocumentRoot</em>. Ten en cuenta que la última versión (la 3.0) sólo es compatible con PHP5.</p>
<p><strong>[2]</strong> Poner los permisos adecuados a los directorios que HTML Purifier usará para cachear algunos archivos. Los directorios en cuestión son <em>DefinitionCache/Serializer</em> y todos sus subdirectorios. Si tenemos acceso por shell al servidor lo solucionamos con un:</p>
<p><code>chmod -R 0777 HTMLPurifier/DefinitionCache/Serializer</code></p>
<p>Utiliza 0777 o 0775 según convenga, el objetivo es permitir al servidor web escribir en estos directorios.</p>
<p><strong>[3]</strong> Es necesario tener instalada la extensión <a target="_blank" href="http://es2.php.net/manual/es/ref.iconv.php" title="PHP: iconv - Manual">iconv</a> si quieres trabajar con un enconding distinto de UTF-8 y si quieres una salida más bonita del HTML también es necesaria la extensión <a target="_blank" href="http://es2.php.net/manual/es/ref.tidy.php" title="PHP: tidy - Manual">tidy</a>.</p>
<p><strong>[4]</strong> Para mayor comodidad puedes incluir el directorio de la HTML Purifier en tu <em>include_path</em> a pesar de que es recomendable sólo hacer <em>require()</em> cuando vayas a usarla, es una librería bastante grande.</p>
<h4>Usando la librería</h4>
<div class="syntax_hilite">
<div id="php-2">
<div class="php"><span style="color:#0000FF;">$dirty_html</span> = <span style="color:#FF0000;">'&lt;strong&gt;prueba'</span>;<br />
<span style="color:#616100;">require_once</span> <span style="color:#FF0000;">'/directorio_de_htmlpurifier/library/HTMLPurifier.auto.php'</span>;<br />
<span style="color:#FF9933; font-style:italic;">//require_once 'HTMLPurifier.php';</span><br />
<span style="color:#0000FF;">$config</span> = HTMLPurifier_Config::<span style="color:#006600;">createDefault</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#0000FF;">$config</span>-&gt;<span style="color:#006600;">set</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'Core'</span>, <span style="color:#FF0000;">'Encoding'</span>, <span style="color:#FF0000;">'ISO-8859-1'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#0000FF;">$config</span>-&gt;<span style="color:#006600;">set</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'HTML'</span>, <span style="color:#FF0000;">'Doctype'</span>, <span style="color:#FF0000;">'HTML 4.01 Transitional'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#0000FF;">$purifier</span> = <span style="color:#000000; font-weight:bold;">new</span> HTMLPurifier<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$config</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#0000FF;">$clean_html</span> = <span style="color:#0000FF;">$purifier</span>-&gt;<span style="color:#006600;">purify</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$dirty_html</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> <span style="color:#0000FF;">$clean_html</span>;</div>
</div>
</div>
<p></p>
<p>En el ejemplo se incluye el archivo <em>HTMLPurifier.auto.php</em> indicando la ruta completa, si has añadido el directorio de la librería en tu <em>include_path</em> puedes incluir <em>HTMLPurifier.php</em> directamente (usa la línea comentada).</p>
<p>En este ejemplo simple se está configurando HTML Purifier para que trabaje con 'HTML 4.01 Transitional' codificado en 'ISO-8859-1'. Por defecto la librería trabaja con 'XHTML 1.0 Transitional' en 'UTF-8', si este es el único tipo de documento y codificación que necesitas puedes eliminar las llamadas a <em>set()</em> y no es necesario crear el objeto <em>$config</em>. Existen muchos otros <a target="_blank" href="http://htmlpurifier.org/live/configdoc/plain.html" title="Configuration Documentation - HTML Purifier">parámetros de configuración</a> que se merecen una ojeada aunque para un funcionamiento normal no es necesario tocar casi nada.</p>
<p>También existen plugins para varios CMS conocidos para empezar a usar HTML Purifier de una forma todavía más fácil. Entre ellos está el plugin <a target="_blank" href="http://urbangiraffe.com/plugins/html-purified/" title="HTML Purified - Enhanced protection against XSS | Urban Giraffe">HTML Purified para WordPress</a> y el módulo <a target="_blank" href="http://drupal.org/project/htmlpurifier" title="HTML Purifier | drupal.org">HTML Purifier para Drupal</a>.</p>


<p>Entradas relacionadas:<ul><li><a href='http://www.phpbsd.net/2007/01/14/capturando-los-fatal-errors-del-php-con-nuestro-handler/' rel='bookmark' title='Permanent Link: Capturando los fatal errors del PHP con nuestro handler'>Capturando los fatal errors del PHP con nuestro handler</a></li><li><a href='http://www.phpbsd.net/2007/02/11/el-mes-de-los-bugs-y-nueva-version-de-php/' rel='bookmark' title='Permanent Link: El mes de los bugs y nueva versión de PHP'>El mes de los bugs y nueva versión de PHP</a></li><li><a href='http://www.phpbsd.net/2007/01/31/transfiriendo-datos-con-la-libreria-curl-en-php/' rel='bookmark' title='Permanent Link: Transfiriendo datos con la librería cURL en PHP'>Transfiriendo datos con la librería cURL en PHP</a></li></ul></p>]]></content:encoded>
			<wfw:commentRss>http://www.phpbsd.net/2008/01/29/html-purifier-evita-los-ataques-xss-y-valida-tu-html/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

