首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Youtube.com试图提取HTML5画布数据: Youtube是否试图指纹用户的浏览器?

Youtube.com试图提取HTML5画布数据: Youtube是否试图指纹用户的浏览器?
EN

Security用户
提问于 2015-12-21 10:41:15
回答 1查看 2K关注 0票数 6

当试图使用Tor浏览器观看Youtube视频时,Tor浏览器打开一个警报窗口:

代码语言:javascript
复制
This website (www.youtube.com) attempted to extract HTML5 canvas image data, which may be used to uniquely identify your computer.

Should Tor Browser allow this website to extract HTML5 canvas image data?

截图:http://imgur.com/aPTdy7k

回答no会阻止视频播放。

Youtube想给访客打指纹吗?在不允许HTML5画布提取的情况下,我们能做些什么来观看Youtube视频呢?

EN

回答 1

Security用户

发布于 2015-12-21 11:28:44

很可能不会,但你永远无法确定。

首先,为什么一个网站“试图提取HTML5画布图像数据”?HTML5画布元素允许使用Javascript处理2d图像。在许多其他操作中,它可以将图像或视频绘制到画布上,然后在逐像素的水平上对它们进行操作。虽然有很多合法的用途,但它也可以用来检测不同的web浏览器如何渲染图像、视频和文本以获取用户web浏览器的信息的细微差别。然后,可以将该信息发送回服务器。

Youtube包含了相当多的Javascript代码,其中大部分代码被严重压缩。这使得审计几乎是不可能的。但是我发现了4种.getImageData函数,它用于提取base.js文件中的画布数据。

代码语言:javascript
复制
a=a.o.getImageData(c,d,e,f).data;for(b=0;b<a.length;+=4)if(255<a[b]+a[b+1]+a[b+2]+a[b+3])return!0;return!1

这似乎是检查整体亮度水平的一部分图像,并检测它是“亮”或“黑暗”。

代码语言:javascript
复制
f=e.getImageData(0,0,b,c),k=b*c,l=0;l<k;l++){var m=4*l;f.data[m]=f.data[m+1]=f.data[m+2]=Math.floor(35*Math.random());f.data[m+3]=255}e.putImageData(f,0,0);

这将整个图像替换为随机灰色噪声,并将其写回画布。我怀疑这是代码的一部分,它创建了“此视频无法显示”错误消息的背景。

代码语言:javascript
复制
b=b.getImageData(0,0,1,1).data;return b[0]==b[2]&&b[1]==b[3]

这部分代码会出现两次。它检查画布的第一个像素是否为灰度颜色。

这些片段中没有一个看起来可疑,似乎在视频播放器中使用此功能是可行的。但是,看看这是多么微小的混乱,以及有多少代码,很难确定它没有向服务器泄露任何信息的情况。而且,仅仅因为我得到了这4个案例的Javascript,并不意味着你会得到同样的结果。他们可以根据一百万个变量向不同的用户发送不同的javascript。

票数 7
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/108675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档