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

信息安全 网页浏览器 指纹识别 html-5
2021-09-05 23:05:39

尝试使用 Tor 浏览器观看 Youtube 视频时,Tor 浏览器会打开一个警告窗口:

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 视频?

1个回答

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

一、为什么网站会“试图提取 HTML5 画布图像数据”?HTML5 画布元素允许使用 Javascript 操作 2d 图像。在许多其他操作中,它可以将图像或视频绘制到画布上,然后逐个像素地操作它们。虽然这有很多合法用途,但它也可用于检测不同 Web 浏览器如何呈现图像、视频和文本的细微差异,以获取有关用户 Web 浏览器的信息。然后可以将该信息发送回服务器。

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

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

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

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);

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

b=b.getImageData(0,0,1,1).data;return b[0]==b[2]&&b[1]==b[3]

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

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