Отправляют ли мобильные браузеры файлы cookie httpOnly через аудиотег HTML5?

Я пытаюсь воспроизвести некоторые mp3-файлы через аудио-тег html5. Для настольных компьютеров это отлично работает (с Chrome), но когда дело доходит до мобильных браузеров (также Chrome (для Android)), возникают некоторые трудности:

Я защитил поток паролем, поэтому серверу потоковой передачи необходимо найти специальный файл cookie для аутентификации (spring security запомни меня). Но почему-то мобильный браузер не отправляет этот файл cookie, когда он обращается к mp3-потоку через аудиотег. Когда я ввожу URL-адрес потока прямо в адресную строку, все работает нормально.

Пока я искал потерянный файл cookie, я обнаружил, что мобильный браузер по-прежнему отправляет некоторые файлы cookie (например, JSESSIONID), но не все. Дальнейшие исследования (быстрый PoC с PHP) показали, что мобильный браузер, похоже, отказывается отправлять файлы cookie через аудио-тег, для которого установлен флаг HttpOnly. Итак, мой вопрос:

Это определенное поведение, почему существуют различия между мобильной и настольной версиями (Chrome) и есть ли способ контролировать поведение со стороны клиента?


person JepZ    schedule 30.04.2013    source источник


Ответы (2)


Более подробно изучив HTTP-пакеты, я обнаружил, что браузер Android не запрашивает сам mp3-поток, а делегирует его stagefright (какой-то мультимедийный клиент Android). Быстрый поиск показал, что для старых версий Android (до 4.0) stagefright не может обрабатывать файлы cookie:

Мои собственные тесты подтвердили это. Старый stagefright (Android 2.3.x) вообще не отправляет никаких файлов cookie, stagefright из европейского S3 (android 4.1.2, stagefright 1.2) отправляет только файлы cookie, которые НЕ имеют флага httpOnly.

Поэтому я думаю, что каждый должен сам решить, какое решение он хочет использовать:

  • включить httpOnly: у Android вообще нет доступа, кроме безопасности
  • отключить httpOnly: менее защищен от XSS, но работает для Android> 4.0
  • отключить аутентификацию файлов cookie вообще: небезопасно, но работает для всех

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

person JepZ    schedule 06.05.2013
comment
Об этой проблеме было сообщено на android: code.google.com/p/android / issues / detail? id = 17553, хотя он был отмечен как закрытый как "спам". Я могу открыть проблему повторно, так как я не понимаю решение проблемы "спама". - person Frank Schwieterman; 03.04.2014
comment
Другие проблемы, на которые стоит обратить внимание: code.google.com/p/android/issues / detail? id = 66050, code.google.com / p / chromium / issues / detail? id = 163796 - person Frank Schwieterman; 03.04.2014
comment
Вероятно, такая же проблема при встраивании / потоковой передаче видео с использованием PHP и аутентификации cookie / сеанса, см. stackoverflow.com/q/32181185/1066234 - person Avatar; 26.08.2015

У меня была такая же проблема, и отключение флагов HttpOnly или Secure для файлов cookie не решило проблему в браузере Chrome на Android 4.2 и 4.4.

Наконец я понял причину. У меня был файл cookie, значение которого содержало специальные символы: двоеточие (:) и вертикальную черту (|) и т. Д. После отключения этого файла cookie со специальными символами видео в Android 4.2 и 4.4 воспроизводятся нормально.

Надеюсь, это кому-то поможет.

person TheOne    schedule 30.06.2015