jueves, 5 de enero de 2012

Editores de texto enriquecido y Cross Site Scripting

Recientemente he tenido que incorporar un editor de texto enriquecido a una aplicación, www.tabladequesos.es, después de investigar entre las diferentes opciones que encontré, me decidí por Tinyemc, seguramente el editor de texto enriquecido más extendido entre los desarrolladores, se caracteriza por ser un edito WYSIWYG, que traducido, el acrónimo viene a significar lo que ves es lo que tienes, esto quiere decir que tu editas el texto como lo editarías en una aplicación tipo openoffice word y el propio editor lo traduce a HTML de forma transparente para el usuario, en mi caso luego quiero mostrar este texto dentro de una página generada mediante JSF (Java Server Faces), la primera opción es mostrarlo en una etiqueta de texto pero el resultado es que muestra el texto HTML en crudo, como si lo viésemos en un editor texto, sin que esté interpretado, para conseguir que se interprete como HTML es necesario poner un atributo de la etiqueta h:outputText escape="false", en este momento es cuando se me empezaron a encender en la cabeza las señales de alarma, este detalle hace que la aplicación sea vulnerable a los ataques de XSS (Cross Site Scripting), que no es ninguna tontería ya que según OWASP, que desde mi punto de vista es la biblia de la seguridad en aplicaciones web, es el segundo riesgo más importante en este tipo de desarrollos (ver top 10), indagué un poco más y vi que desde OWASP ofrecían una solución que afortunadamente estaba disponible en java, es un proyecto alojado en google code que se llama antisamy, básicamente consiste en un API y un fichero de configuración XML que es en el que se basa el análisis de código HTML para ver si es malicioso o no, en la zona de descarga se ofrecen varios de estos ficheros para que el usuario seleccione el que más se ajuste a sus necesidades, a día de hoy se dispone de cinco ficheros, entre los que destacan los de ebay y myspace, y como no el de tinymce, pues va a ser verdad que tinymce está muy extendido.

No hay comentarios: