
Estamos observando un comportamiento extraño en los datos enviados a nuestros sistemas desde javascript desde el 9/9/2015.
El problema aparece cuando la cadena de consulta se envía a nuestros servidores. Algunos valores de los parámetros que contienen la solicitud de obtención se mezclan. No es posible realizar un mapeo de los datos recibidos ya que los parámetros se deforman totalmente.
Por ejemplo, el parámetro 'foo=bar' obtiene 'foo=abr' o 'foo=rab'. Lo que implica que los datos todavía están disponibles, pero los caracteres ya no están en el orden correcto. Esto sólo ocurre en parámetros que tienen más de 8 caracteres.
Calculamos una suma de comprobación basada en el hash de Jenkins para la cadena de consulta. Esta suma de comprobación se transmite correctamente ya que la cadena tiene solo 6 caracteres. La solicitud GET se envía a nuestros sistemas inmediatamente después del cálculo de la suma de verificación. Es por eso que el problema no debería estar en JavaScript.
El análisis de los registros de acceso de nuestros servidores muestra que los parámetros ya están mezclados cuando se reciben.
Por ahora sólo pudimos observar este problema en los agentes de usuario de Mozilla Firefox en combinación con los sistemas operativos Microsoft Windows. Una muestra de solicitudes defectuosas de ayer muestra los siguientes agentes de usuario:
- Mozilla/5.0 (Windows NT 10.0; rv:40.0) Gecko/20100101 Firefox/40.0
- Mozilla/5.0 (Windows NT 10.0; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0
- Mozilla/5.0 (Windows NT 10.0; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0
- Mozilla/5.0 (Windows NT 5.1; rv:39.0) Gecko/20100101 Firefox/39.0
- Mozilla/5.0 (Windows NT 5.1; rv:40.0) Gecko/20100101 Firefox/40.0
- Mozilla/5.0 (Windows NT 6.0; rv:40.0) Gecko/20100101 Firefox/40.0
- Mozilla/5.0 (Windows NT 6.0; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0
- Mozilla/5.0 (Windows NT 6.1; rv:39.0) Gecko/20100101 Firefox/39.0
- Mozilla/5.0 (Windows NT 6.1; rv:40.0) Gecko/20100101 Firefox/40.0
- Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0
- Mozilla/5.0 (Windows NT 6.1; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0
- Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0
- Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0
- Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0
- Mozilla/5.0 (Windows NT 6.1; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0
- Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0
- Mozilla/5.0 (Windows NT 6.2; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0
- Mozilla/5.0 (Windows NT 6.3; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0
- Mozilla/5.0 (Windows NT 6.3; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0
Es poco probable que estas solicitudes sean algún tipo de ataque, ya que provienen de una amplia gama de direcciones IP y tienen una proporción muy baja (por debajo del 0,1 por ciento) del total de solicitudes. El comportamiento de los clientes también parece normal.
Hay una publicación en reddit (https://redd.it/3lxg26) y una publicación en stackoverflow (https://stackoverflow.com/questions/32572264/what-might-be-shufflling-my-query-string-parameters-constructed-in-javascript) que describe un problema similar.
¿Hay alguien que tenga alguna sugerencia sobre este problema? ¿O experimentar algunos efectos similares en su aplicación?