viernes, 13 de enero de 2012

¿Como asegurar que mi aplicación web es accesible?

Recientemente estoy impartiendo un curso del Ministerio y de la Comunidad Económica Europea sobre desarrollo de aplicaciones Web con J2EE y software libre, uno de los temas trata sobre accesibilidad, la pregunta más frecuente es "¿Como asegurar que mi aplicación web es accesible?", según la wikipedia La accesibilidad: es el grado en el que todas las personas pueden utilizar un objeto, visitar un lugar o acceder a un servicio, independientemente de sus capacidades técnicas, cognitivas o físicas, resumiendo es como preparo mi aplicación para el mayor rango de usuarios posible, incluyendo los que tienen discapacidades, para las aplicaciones web el W3C (World Wide Web Consortium) ofrece pautas específicas para asegurar este tipo de accesiblidad, en concreto existe un grupo de trabajo que se encarga de este tema WAI (Web Accessibility Initiative, Iniciativa de Accesibilidad Web), y puede que la forma más rápida de entrar en contacto con estos conceptos es ir directamente a una guía rápida que ofrece WAI donde existe una serie de pautas que se puede utilizar como lista de chequeo sobre la aplicación.

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.