Назад | Перейти на главную страницу

Параметры строки запроса перемешиваются

Мы наблюдаем странное поведение данных, отправляемых в наши системы с помощью javascript с 9 сентября 2015 года.

Проблема проявляется, когда строка запроса отправляется на наши серверы. Некоторые значения содержащихся параметров в запросе на получение перетасовываются. Отображение полученных данных невозможно, поскольку параметры полностью деформируются.

Например, параметр 'foo = bar' получает 'foo = abr' или 'foo = rab'. Это означает, что данные все еще доступны, но символы больше не в правильном порядке. Это происходит только с параметрами, длина которых превышает 8 символов.

Мы вычисляем контрольную сумму на основе хэша Дженкинса для строки запроса. Эта контрольная сумма передается правильно, так как длина строки составляет всего 6 символов. Запрос GET отправляется в наши системы сразу после расчета контрольной суммы. Поэтому проблема не в javascript.

Анализ журналов доступа наших серверов показывает, что параметры уже перетасовываются при их получении.

К настоящему времени мы могли наблюдать эту проблему только в пользовательских агентах Mozilla Firefox в сочетании с операционными системами Microsoft Windows. Образец ошибочных запросов за вчерашний день показывает следующие пользовательские агенты:

Маловероятно, что эти запросы являются какой-либо формой атаки, поскольку эти запросы поступают с широкого диапазона IP-адресов и имеют очень низкую долю (менее 0,1 процента) от общего числа запросов. Поведение клиентов тоже кажется нормальным.

Есть пост на Reddit (https://redd.it/3lxg26) и сообщение о stackoverflow (https://stackoverflow.com/questions/32572264/what-might-be-shufflling-my-query-string-parameters-constructed-in-javascript) описывая похожую проблему.

Есть ли у кого-нибудь предложения по этой проблеме? Или испытываете аналогичные эффекты при их применении?