Servicios web que devuelven JSON y cross-site scripting

Si creamos un servicio web que devuelve los datos en formato JSON, debemos ser conscientes del posible agujero de seguridad que estaríamos creando para poder controlarlo.
La vulnerabilidad permite que una página se vea comprometida ante un ataque de cross-site scripting. Enviando una petición a un servicio JSON, es posible recuperar datos de otro dominio diferente al que se está ejecutando en la sesión del cliente. Esto proporciona acceso potencial a los datos de otros sitios a los que el cliente se ha conectado en algún momento. Como la respuesta está en JSON (JavaScript), esta se puede parsear como una sentencia normal de Javascript.
Por ejemplo, si la respuesta es un conjunto de saldos de una cuenta bancaria, un script malintencionado podría obtener acceso a esos datos.
[1110.25, 990.50, 1250.35, 1250.35]

Si el script es inyectado en el sitio web dominio1.es, que pide datos al sitio mibanco.es, y envía los datos a un tercer sitio, cualquiera que esté conectado a mibanco.es y después entre en dominio1.es estaría proporcionando información sensible al atacante.A partir de la versión 3.5 del framework .NET, la librería AJAX de ASP .NET resuelve esta vulnerabilidad utilizando un «envoltorio» alrededor de los datos JSON de retorno. ASP .NET utiliza el parámetro «d» para formatear los datos JSON. Esto obliga a los datos del ejemplo a aparacer de la siguiente forma, lo que no es una sentencia JavaScript válida y, por lo tanto, no puede ser parseada o instanciada como un nuevo objeto JavaScript.

{ "d" : [1110.25, 990.50, 1250.35, 1250.35] }

Por lo tanto, esto evita que, en un posible ataque de cross-site scripting , el atacante pueda acceder a los datos JSON desde otros dominios.

Nuestra puntuación
Twittear
Compartir
Compartir
Pin