Italiano

Immagini e foto · Strumento per la privacy dei metadati delle immagini

Come un browser legge EXIF da JPEG senza caricarlo

· Come funziona

exif privacy-immagine elaborazione del browser formati di file

Una fotografia che diventa byte locali, segmenti JPEG e campi EXIF leggibili all'interno di un browser
Illustrazione vettoriale originale ToolAcre

Una panoramica di ciò che accade realmente tra il rilascio di un JPEG sulla pagina e la visualizzazione dei suoi metadati: i byte vengono letti localmente, il segmento APP1 viene individuato e le directory TIFF al suo interno vengono decodificate in JavaScript, senza server coinvolti.

L'affermazione da testare: "non viene caricato nulla": perché un ispettore dei metadati deve solo leggere i byte che già possiede e come confermare che nessuna richiesta esca dalla scheda

L'affermazione che una fotografia non viene caricata è verificabile piuttosto che decorativa. Lo strumento legge il file selezionato in un ArrayBuffer, lo converte in byte e passa tali byte direttamente al lettore di metadati. La sua informativa sulla privacy limita attentamente la promessa: la fotografia viene analizzata nella scheda del browser, nessuna copia viene archiviata e le richieste di analisi divulgate sono separate dal percorso del codice che gestisce il file.

Leggendo il file localmente con il File API: come il browser consegna allo strumento un ArrayBuffer della tua foto senza che i byte lascino il dispositivo

Un selettore di file fornisce un oggetto File del browser e file.arrayBuffer() rende i suoi contenuti disponibili a JavaScript già in esecuzione nella pagina. ToolAcre impone un limite 50 MB, quindi identifica JPEG, PNG o WebP dai byte stessi. Questa lettura locale non richiede l'invio di un modulo o un endpoint di caricamento delle immagini e il test di isolamento della rete esercita tutti e tre i formati supportati senza registrare una richiesta.

Trovare il segmento APP1 — percorrendo gli indicatori JPEG da SOI all'intestazione "Exif" e saltando invece i segmenti che contengono ICC o XMP

Per JPEG, il lettore inizia dopo l'indicatore di inizio immagine e percorre i segmenti dell'indicatore fino all'indicatore di inizio scansione. Riconosce i payload APP1 che iniziano con Exif e li analizza, mentre XMP viene rilevato solo per la rimozione e ICC viene deliberatamente conservato come dati di rendering. Tutto, dal contrassegno di scansione in poi, appartiene al percorso dell'immagine compressa anziché al rapporto EXIF.

Decodifica dell'intestazione TIFF e degli IFD: ordine dei byte (II o MM), l'offset su IFD0 e le voci 12-byte che puntano alle sottodirectory Exif e GPS

Un payload EXIF contiene un blocco TIFF. Il parser legge il marcatore dell'ordine dei byte II o MM, controlla il valore magico TIFF e segue l'offset su IFD0. Ogni voce di directory fornisce un tag, un tipo, un conteggio e un valore in linea o un offset. Da IFD0 il codice segue solo i puntatori alla sottodirectory Exif e GPS, mantenendo l'attraversamento limitato invece di inseguire ogni possibile struttura privata.

Trasformare i valori dei tag grezzi in campi leggibili: ID tag, tipi di dati, valori razionali e stringhe ASCII e perché alcuni valori necessitano di una tabella di ricerca

I valori grezzi diventano utili solo dopo che i relativi tipi e tag sono stati interpretati. I campi ASCII diventano stringhe, i tipi numerici utilizzano l'ordine dei byte TIFF e le coppie razionali diventano numeri dopo la lettura del numeratore e del denominatore. Un dizionario dei tag etichetta marca, modello, timestamp, software, campi seriali e valori GPS della fotocamera, quindi classifica la posizione e l'identità del dispositivo prima dei campi tecnici meno sensibili.

Esempio funzionante: una foto del telefono analizzata nel thread principale

La cartella di lavoro descriveva questo esempio come in esecuzione in un Web Worker, ma il pannello fornito chiama readMetadata direttamente dopo aver atteso file.arrayBuffer(); nessun lavoratore partecipa a questo percorso. Un telefono selezionato JPEG viene quindi letto e analizzato nel thread principale della pagina, dopodiché qualsiasi latitudine e longitudine vengono stampate come numeri e viene visualizzata la tabella del campo completo. La correzione è importante perché l'elaborazione locale e l'elaborazione da parte del lavoratore sono affermazioni diverse.

Che cosa non copre: gli elementi interni di MakerNote, i formati RAW, HEIC e i contenitori video sono esterni a questa procedura dettagliata e esterni allo strumento

Il lettore è volutamente incompleto. Non decodifica i componenti interni di MakerNote, i campi delle miniature IFD1, i contenuti JPEG XMP o i contenuti RAW, HEIC non supportati, AVIF, TIFF, GIF e Contenitori SVG. Un segmento EXIF corrotto viene saltato in modo che non possa bloccare la rimozione successiva. Un report vuoto significa solo che questo parser delimitato non ha trovato campi leggibili, non che ogni possibile canale di informazione è assente.

Conclusione: leggere i metadati è un lavoro locale, a livello di byte: lo strumento per la privacy dei metadati delle immagini fa esattamente questo, quindi puoi controllarli prima di condividerli senza fidarti di un server

La lettura dei metadati è un lavoro locale a livello di byte quando l'implementazione mantiene i byte selezionati nella scheda e non esegue alcuna richiesta con essi. Utilizza il report per identificare cosa può vedere questo parser, quindi utilizza l'azione di rimozione separata quando è necessaria una copia pulita. L'ispezione non modifica mai la fotografia originale e il codice sorgente e il test di isolamento della rete forniscono prove più forti di un generico badge di elaborazione del browser.