Youtube.com cerca di estrarre dati di canvas HTML5: YouTube sta cercando di impronte digitali del browser degli utenti?

5

Durante il tentativo di guardare video di YouTube tramite il browser Tor, il browser Tor apre una finestra di avviso:

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?

Screenshot: link

La risposta a no impedirà la riproduzione del video.

YouTube sta cercando di impronte digitali ai visitatori? Cosa possiamo fare per guardare i video di YouTube senza consentire l'estrazione della tela HTML5?

    
posta supercobra 21.12.2015 - 11:41
fonte

1 risposta

6

Probabilmente no, ma non si può mai essere sicuri.

In primo luogo, perché un sito web "ha tentato di estrarre dati di immagine su tela HTML5"? L'elemento canvas HTML5 consente la manipolazione di immagini 2D con Javascript. Tra le molte altre operazioni, può disegnare immagini o video sulla tela e quindi manipolarli a livello di pixel per pixel. Sebbene ci siano molti usi legittimi per questo, può anche essere usato per rilevare sottili differenze nel modo in cui i diversi browser web rendono immagini, video e testo per ottenere informazioni sul browser web degli utenti. Queste informazioni possono quindi essere inviate al server.

Youtube include un bel po 'di codice Javascript, e la maggior parte di essa è molto miniata. Ciò rende l'auditing quasi impossibile. Ma ho trovato 4 casi della funzione .getImageData che è usata per estrarre i dati della tela nel file base.js.

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

Questo sembra controllare il livello generale di luminosità di una parte dell'immagine e rileva se è "luminoso" o "scuro".

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

Sostituisce l'intera immagine con un rumore grigio casuale e la riporta alla tela. Sospetto che faccia parte del codice che crea lo sfondo per il messaggio di errore "questo video non può essere visualizzato".

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

Questa parte del codice appare due volte. Controlla se il primo pixel della tela è un colore in scala di grigi.

Nessuno di questi frammenti sembra sospetto e sembra essere l'uso plausibile di questa funzione nel contesto di un lettore video. Ma dando un'occhiata al pasticcio minuscolo questo è e quanto codice c'è, è difficile essere sicuri che non ci sia alcuna situazione in cui si perde alcuna informazione a un server. Inoltre, solo perché ho ottenuto Javascript con solo questi 4 casi, non significa che otterrai lo stesso. Potrebbero inviare javascript diversi a utenti diversi a seconda di un milione di variabili.

    
risposta data 21.12.2015 - 12:28
fonte

Leggi altre domande sui tag