Como evitar Cross-site Scripting (XSS) con Spring MVC

Cross-site Scripting (XSS) es una de las más comunes vulnerabilidades en las aplicaciones Web, sobre todo porque puede ser explotada sin ninguna herramienta sofisticada.

Su funcionamiento:

Las aplicaciones tienen formularios para recibir datos introducidos por el usuario, por ejemplo un campo donde se meta el DNI. Si el hacker introduce código Javascript malicioso en ese campo el servidor puede procesarlo y devolverlo.

Por ejemplo si tenemos este HTML:

Y en el campo name metemos este código: “>Hacker<script>alert("Hola");</script>

Cuando hagamos el submit de la página tendremos:

<form id="personForm">

<input type="text" name="name" value="">Hacker <script>alert("Hola");</script>"/>

<input type="submit" value="Submit">

</form>

Aunque las nuevas versiones de los navegadores ya no procesan este código ya que lo escapan

algunas versiones antiguas si lo hacen.

Solución:

HTML 4.0 define secuencias de escape, si se usan el navegador devolverá el texto con estas secuencias y el resultado no será un Javascript de modo que no lo procesará. Como comentábamos los nuevos navegadores ya escapan automáticamente.

Solución con Spring MVC:

En Spring MVC se usan las form-tags para crear las JSPs. Spring MVC permite codificar los caracteres de escape de varias formas:

1) A nivel global puede definirse en el fichero web.xml en el parámetro de contexto:

<context-param>

<param-name>defaultHtmlEscape</param-name>

<param-value>true</param-value>

</context-param>

2) A nivel de página usando este tag:

<spring:htmlEscape defaultHtmlEscape="true" />

3) Definir el atributo en cada form-tag, por ejemplo:

<form:input path="name" htmlEscape="true" />
About these ads

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 515 seguidores

A %d blogueros les gusta esto: