Como sigo a diario Planeta código, me encuentro estupendas bitácoras de programadores, como, por ejemplo, PHPBSD.net, con interesantes entradas como "HTML Purifier, evita los ataques XSS y valida tu HTML".
En dicha entrada se habla sobre HTML Purifier, una completísima librería escrita en PHP, que te permite filtrar HTML, evitando ataques XSS incluso "reparando" HTML de modo que quede "estricto", permitiendo o no determinadas etiquetas, y, muchos etcéteras más.
HTML Purifier me llamó la atención porque en Gesbit hago uso de KSes para filtrar cierto HTML (el contenido de entradas y comentarios), y resulta que HTML Purifier vendría a ser el "primo de zumosol" de Kses, es decir, que, según las comparativas, HTML Purifier sale claro vencedor en casi todos los puntos que se tocan.
Además, gracias a las entradas y sitios web enlazados, me enteré de la existencia de ciertos otros "filtros para HTML" que no conocía, y que tendré que probar. Pero, en esta entrada me ciño a HTML Purifier, y, la posibilidad de usarlo en Gesbit en lugar de KSes.
HTML Purifier es una maravilla, sin duda alguna. Pero, dudo de que sea lo que Gesbit necesita, puesto que se trata de filtrar el contenido de entradas y comentarios, pero, HTML Purifier complica, en mi opinión, innecesariamente, esta tarea. ¿Cómo algo tan bueno puede no ser útil?
HTML Purifier es útil. Muy útil. Pero, para el caso de Gesbit, pareciera que se están matando moscas a cañonazos. Pondré un ejemplo. Para "permitir" el uso de ciertas etiquetas HTML, como puedan ser "object", "embed", "param", etc., HTML Purifier va tan lejos que, sencillamente, no permite estas etiquetas, de entrada, y es lo adecuado, porque estas etiquetas están "desaprobadas" por el W3C, por poner un caso.
Pero, es habitual usar este tipo de etiquetas... muchos sitios que "empotran" vídeos en nuestros sitios utilizan estas etiquetas... ¿y qué hacer entonces? Pues HTML Purifier propone personalizar sus los "filtros", crear nuevos filtros (en tiempo de diseño), como alguno que ya existe y que permite qye "valide" el código de los vídeos de Youtube.
¿Pero qué ocurre con los otros sitios web que alojan vídeos? Existe un filtro exclusivo para la etiqueta "object", pero, por ejemplo, no "soporta" la etiqueta "embed", otra vez, con buen criterio, acaso, pero, ¿qué hacer en la vida real? ¿Qué pasa si nosotros queremos permitir estas etiquetas, o hacerlo de forma discriminada, unas veces sí, otras no?
Con KSes este asunto es sencillo. Quizá demasiado, pero, aparentemente, todo va más o menos bien. ¿Qué se puede hacer en KSes? Añadir las etiquetas susomentadas a la lista de las permitidas. Y eso es todo. Se permiten las etiquetas "object", "embed", etc., si es lo que se quiere, independientemente de que estas sean "válidas", formen parte del "estándar" o no.
HTML Purifier, desde luego, es una herramienta mucho más completa, y, para algunos casos, estoy seguro de que es la ideal, por lo menos de entre las que he podido conocer. Pero, para el caso de Gesbit, creo que no lo es tanto, o que conlleva ciertas cosas a tener en cuenta que no he sido capaz de enfrentar.
Reconozco, de todos modos, que no he mirado HTML Purifier extensivamente. Es una librería compleja, que, con las pocas pruebas que he hecho, no me extrañaría estar metiendo la pata, es decir, no haber comprendido nada y estar hablando aquí por hablar, sin saber muy bien de qué estoy hablando.
Pero, la impresión que he tenido es la que he tratado de plasmar en esta entrada. HTML Purifier es una excelente herramienta, pero, un martillo también lo es para clavar clavos, pero, no para atornillar. Cada herramienta para su tarea, y creo que algo similar a KSes es realmente lo que necesito en Gesbit, por ejemplo.
KSes también tiene sus "debilidades", y, entre otras cosas, es un proyecto que lleva bastante tiempo sin dar señales de vida, quizá abandonado. Existen otros filtros para HTML que he podido descubrir partiendo de algunos de los enlaces que he puesto en esta entrada. Tendré que revisar por lo menos algunos de ellos.
Incluso tendré que volver sobre HTML Purifier, puesto que, desde luego, parece un excelente software, muy "pensado" (no me atrevo a decir muy bien diseñado) y que puede ser muy útil en un momento dado. No está mal conocer de su existencia y saber que puedes contar con él y que puede llegar a ser muy útil.
Así que estoy, se puede decir, más o menos contento con el trabajo de hoy. ¿Que qué he conseguido? Pues... entre otras cosas... estoy de lleno en el "loop" de entradas... lo que en 
