做手机浏览器通过HTML5音频标签发送的HttpOnly饼干?(Do Mobile Browsers

2019-09-01 13:19发布

我试图通过HTML5音频标签玩一些MP3文件。 对于桌面这一伟大工程(含铬),但是当涉及到移动浏览器(也Chrome浏览器(Android版)),似乎有一些困难:

我与一些密码保护流中,因此流媒体服务器需要找到一个特别认证的cookie(春季安全的remember-me)。 但不知何故,当它访问通过音频标签的MP3流的移动浏览器不发送这个cookie。 当我直接进入视频流网址到地址栏的一切工作就好了。

虽然我搜索了失去的饼干,我发现,该手机浏览器仍然将一些饼干(如JSESSIONID),但不是全部。 进一步的调查(快速的PoC与PHP)透露,移动browsern似乎拒绝通过音频标签,因为他们的HttpOnly标志设置为发送cookie。 所以我的问题是:

这是指定的行为,为什么有移动和桌面版本(的铬)和之间的差异有没有办法控制来自客户端的行为?

Answer 1:

通过查看更深入地进入HTTP包我发现,那Android的浏览器不要求MP3流本身,而是代表这怯场(某些Android多媒体客户端)。 快速搜索发现,对于老版本的Android(4.0前)怯场不能处理的Cookie:

  • https://code.google.com/p/android/issues/detail?id=17553 < - (状态:垃圾邮件)WTF ...
  • https://code.google.com/p/android/issues/detail?id=17281
  • https://code.google.com/p/android/issues/detail?id=10567
  • https://code.google.com/p/android/issues/detail?id=19958

我自己的测试证实了这一点。 老怯场(Android的2.3.x版本)不发送任何的cookies,从欧洲的S3的怯场(安卓4.1.2,怯场1.2)只发送不具有中HTTPOnly标志的饼干。

因此,我认为每个人都有权决定自己他要用哪种解决方案:

  • 启用仅Http:Android有没有任何访问,但其安全
  • 禁用仅Http:对XSS安全性较低,但工程为Android> 4.0
  • 在所有禁用cookie认证:不安全但适用于所有

注:与简单地禁用的HttpOnly的问题是,你让你的整个应用程序容易受到饼干劫机者。 另一种可能的解决办法是有流(不仅Http)的特殊与rememberMe cookie,并与中HTTPOnly启用另一个与rememberMe饼干。



Answer 2:

我有同样的问题和禁用的HttpOnly或安全标志的Cookie没有解决在Android 4.2和4.4 chrome浏览器的问题。

最后我想通了原因。 我曾与它包含特殊字符冒号值一个cookie(:)和管道(|)等禁用特殊字符的视频在Android 4.2和4.4播放罚款的cookie之后。

希望这可以帮助别人。



文章来源: Do Mobile Browsers send httpOnly cookies via the HTML5 Audio-Tag?