html5-audio – 移动浏览器是否通过HTML5音频标签发送httpOnly cookie?

我尝试通过html5音频标签播放一些mp3文件.对于桌面而言,这非常适合(使用Chrome),但是当涉及到移动浏览器(也是Chrome(适用于Android))时,似乎存在一些困难:

我用一些密码保护了流,因此流媒体服务器需要找到一个特殊的身份验证cookie(spring security remember-me).但不知何故,移动浏览器在通过音频标签访问mp3流时不会发送此cookie.当我直接输入流URL到地址栏时,一切正常.

当我搜索我发现的丢失的cookie时,移动浏览器仍然发送一些cookie(例如JSESSIONID)但不是全部.进一步调查(使用PHP快速PoC)显示移动浏览器似乎拒绝通过具有HttpOnly Flag设置的audio-tag发送cookie.所以我的问题是:

这是一个指定的行为,为什么移动和桌面版本(Chrome)之间存在差异,是否有一种方法可以控制客户端的行为?

解决方法

通过深入研究我发现的HTTP包,Android浏览器不会请求mp3流本身,而是将其委托给stagefright(一些Android多媒体客户端).快速搜索显示,对于旧的Android版本(4.0之前),stagefright无法处理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

我自己的测试证实了这一点旧的stagefright(Android 2.3.x)根本不发送任何cookie,来自欧洲S3(android 4.1.2,stagefright 1.2)的stagefright只发送没有httpOnly标志的cookie.

所以我认为每个人都必须自己决定使用哪种解决方案:

>启用httpOnly:android完全没有访问权限,但它的安全性
>禁用httpOnly:对XSS的安全性较低,但适用于Android> 4.0
>根本禁用cookie身份验证:不安全但适用于所有人

注意:简单地禁用httpOnly的问题是您使整个应用程序容易受到cookie劫持者的攻击.另一种可能的解决方案是为流提供一个特殊的记忆cookie(没有httpOnly)和另一个启用了httpOnly的记忆cookie.

相关文章

HTML5不是新事物。自从最初发布(2008年1月)以来,我们一直在使用它的一些功能。后来,我再次仔细查看...
Pointer Events API 是Hmtl5的事件规范之一,它主要目的是用来将鼠标(Mouse)、触摸(touch)和触控笔(...
CSS动画非常的有趣;这种技术的美就在于,通过使用很多简单的属性,你能创建出漂亮的消隐效果。其中代表...
clip-path介绍 clip-path 直译过来就是裁剪路径,使用SVG或形状定义一个HTML元素的可见区域的方法。想象...
语法 必需。动画时长的百分比。 合法的值: 0-100% from(与 0% 相同) to(与 100% 相同) 定义和用法...
基本代码 html代码: 首先定义一些基本的样式和动画: background-size: auto 100%; 这段代码的意思是让...