画像には、見えない情報が残る。
スマートフォンやカメラで撮影した画像には、見た目だけでは分からない情報が含まれていることがある。
- GPS位置情報
- 撮影日時
- 端末メーカー・機種
- 使用ソフトウェア
- 作成者・著作権
- EXIF、XMP、IPTCなどのメタデータ
SNS側で削除される場合もあるが、送信前の元ファイルに何が入っているかは自分で確認しにくい。そこで、検査 → 削除 → 再検査までを一つの画面で行えるようにした。
まず、何が残っているか見せる。
単に「Exifを削除しました」と表示するだけでは、何が危険だったのか、実際に消えたのかが分からない。
Image Metadata Cleanerでは、画像を選ぶと次の5項目に分けて結果を表示する。
- 位置情報(GPS)
- 撮影日時
- 端末情報
- 作成者・著作権
- メタデータ形式
GPSは存在だけを知らせ、緯度・経度そのものは画面に表示しない。端末情報や日時は、共有前の判断に必要な範囲で表示する。
ブラウザ内で画像を作り直す。
対応メタデータの削除には、画像をブラウザで読み込み、Canvasへ描画して新しいファイルとして書き出す方法を採用した。
JPEG / PNGを選択
↓
メタデータを検査
↓
ブラウザで画像を正しい向きに描画
↓
新しい画像として書き出し
↓
出力ファイルを再検査
↓
端末へダウンロード
JPEGは撮影時の向きがEXIFに依存することがあるため、単純にデータ領域だけを削るのではなく、正しい向きで描画してから画質95%で再生成する。PNGは透過を維持する。
外部へアップロードしない。
画像はプライバシーを守るために処理するものなので、その画像自体を別のサーバーへ送ってしまっては意味が薄い。
検査、再生成、再検査はすべて利用者のブラウザ内で行う。7okenmのサーバーへ画像を送信せず、CookieやLocalStorageにも保存しない。
No upload. No storage. Local processing.
この仕組みは、将来作るスクリーンショットの自動マスクツールにもつながる。
検出できる範囲を誇張しない。
ファイル形式やアプリによって、メタデータの保存方法は異なる。そのため「すべての個人情報を完全削除」とは表現していない。
このツールが検出対象にしているのは、JPEG・PNG内の対応するEXIF、XMP、IPTC、PNGテキストなど。画像そのものに写り込んだ住所、人物、通知、画面上の文字や、ダウンロード後のファイル名までは消えない。
画面にもこの制限を明記し、対応メタデータを削除という言葉で範囲を示した。
テストしてから公開する。
メタデータ解析部分は表示コードから分離し、次の自動テストを追加した。
- JPEGのEXIFからGPS・日時・端末・作成者を検出
- PNGテキストから作成者を検出
- メタデータのないJPEGをCLEARと判定
- 未対応形式を拒否
Astroの本番ビルド後、実際のiPhone画像でもGPS、撮影日時、端末情報の検出を確認した。削除後の画像をもう一度読み込み、対応項目がCLEARになるところまで確認して公開した。
ツールから、仕組みへ。
PDF First Pageに続く2本目として、トップページとTools一覧へ追加。ページ固有のSEO情報、WebApplication 構造化データ、サイトマップも設定した。
これで、7okenm Toolsに「ファイルを外へ出さず、ブラウザだけで処理する」という共通の考え方が見え始めた。次は画像内のメールアドレスや電話番号を検出して隠す、Screenshot Redactへ発展させたい。