日本語

画像と写真 · 画像メタデータ プライバシー ツール

ブラウザが EXIF をアップロードせずに JPEG から読み取る方法

· 仕組み

exif 画像プライバシー ブラウザ処理 ファイル形式

ローカル バイト、JPEG セグメント、および 1 つのブラウザ内で読み取り可能な EXIF フィールドになる写真
オリジナル ToolAcre ベクトル イラスト

ページに JPEG をドロップしてからそのメタデータを確認するまでに実際に何が起こるかを説明します。バイトはローカルで読み取られ、APP1 セグメントが特定され、その中の TIFF ディレクトリが JavaScript でデコードされます。サーバーは関与しません。

テストするクレーム: 「何もアップロードされていない」 — メタデータ インスペクターが既存のバイトを読み取るだけでよい理由と、リクエストがタブから離れていないことを確認する方法

写真がアップロードされていないという主張は、装飾的なものではなく検証可能です。このツールは、選択されたファイルを ArrayBuffer に読み取り、バイトに変換し、それらのバイトをメタデータ リーダーに直接渡します。そのプライバシーに関する声明では、この約束を慎重に制限しています。写真はブラウザーのタブで解析され、コピーは保存されず、開示された分析リクエストはファイルを処理するコード パスから分離されます。

File API を使用してローカルでファイルを読み取る — バイトをデバイスから出さずに、ブラウザがツールに写真の ArrayBuffer を渡す方法

ファイル ピッカーはブラウザーの File オブジェクトを提供し、file.arrayBuffer() はそのコンテンツをページ内ですでに実行されている JavaScript で利用できるようにします。 ToolAcre は 50 MB 上限を強制し、バイト自体から JPEG、PNG、または WebP を識別します。このローカル読み取りにはフォームの送信やイメージのアップロード エンドポイントは必要ありません。また、ネットワーク分離テストでは、リクエストを記録することなく、サポートされている 3 つの形式すべてを実行します。

APP1 セグメントの検索 — JPEG マーカーを SOI から「Exif」ヘッダーまで移動し、代わりに ICC または XMP を伝送するセグメントをスキップします

JPEG の場合、リーダーは画像開始マーカーの後に開始し、スキャン開始マーカーまでマーカー セグメントを移動します。 Exif で始まる APP1 ペイロードを認識して解析しますが、XMP は削除用にのみ検出され、ICC はレンダリング データとして意図的に保持されます。スキャン マーカー以降のすべては、EXIF レポートではなく圧縮画像パスに属します。

TIFF ヘッダーと IFD のデコード — バイト オーダー (II または MM)、IFD0 へのオフセット、Exif および GPS サブディレクトリを指す 12 バイト エントリ

EXIF ペイロードには TIFF ブロックが含まれています。パーサーは II または MM バイト オーダー マーカーを読み取り、TIFF マジック値をチェックし、IFD0 までのオフセットを追跡します。各ディレクトリ エントリは、タグ、タイプ、カウント、およびインライン値またはオフセットのいずれかを提供します。 IFD0 以降、コードは Exif および GPS サブディレクトリ ポインターのみをたどり、考えられるすべてのプライベート構造を追跡するのではなく、走査を制限された状態に保ちます。

生のタグ値を読み取り可能なフィールドに変換する - タグ ID、データ型、有理数、ASCII 文字列、および一部の値にルックアップ テーブルが必要な理由

生の値は、その型とタグが解釈された後にのみ有用になります。 ASCII フィールドは文字列になり、数値型は TIFF バイト オーダーを使用し、有理数ペアは分子と分母が読み取られた後に数値になります。タグ辞書は、カ​​メラのメーカー、モデル、タイムスタンプ、ソフトウェア、シリアルフィールド、GPS 値にラベルを付け、機密性の低い技術分野に先立って位置とデバイスの ID を分類します。

実用的な例: メインスレッドで解析された電話の写真

ワークブックでは、この例が Web ワーカーで実行されるように説明されていますが、出荷されたパネルは file.arrayBuffer(); を待機した後に直接 readMetadata を呼び出します。このパスにはワーカーは参加しません。したがって、選択された電話 JPEG は、ページのメイン スレッドで読み取られて解析され、その後、緯度と経度が数値として出力され、完全なフィールド テーブルがレンダリングされます。ローカル処理とワーカー処理は異なるクレームであるため、修正は重要です。

これでカバーされないもの — MakerNote の内部、RAW 形式、HEIC、およびビデオ コンテナーは、このウォークスルーおよびツールの対象外です。

リーダーは意図的に不完全です。 MakerNote の内部構造、IFD1 サムネイル フィールド、JPEG XMP コンテンツ、またはサポートされていない RAW、HEIC、AVIF、TIFF、GIF、SVG コンテナはデコードされません。破損した EXIF セグメントはスキップされるため、後の削除をブロックできません。空のレポートは、この境界パーサーが読み取り可能なフィールドを見つけられなかったことのみを意味し、考えられるすべての情報チャネルが存在しないことを意味するわけではありません。

要点: メタデータの読み取りはローカルのバイトレベルのジョブです。画像メタデータ プライバシー ツールはまさにこれを実行するため、サーバーを信頼せずに共有する前に検査できます。

実装が選択されたバイトをタブ内に保持し、それらのバイトに対してリクエストを実行しない場合、メタデータの読み取りはローカルのバイトレベルのジョブです。レポートを使用して、このパーサーが認識できる内容を特定し、クリーンなコピーが必要な場合は、別の削除アクションを使用します。検査によって元の写真が変更されることはなく、ソース コードとネットワーク分離テストは、一般的なブラウザ処理バッジよりも強力な証拠を提供します。