Tiếng Việt

Hình ảnh & hình ảnh · Công cụ quyền riêng tư siêu dữ liệu hình ảnh

Cách trình duyệt đọc EXIF từ JPEG mà không tải nó lên

· Cách thức hoạt động

Exif image-privacy browser-processing file-formats

Một bức ảnh trở thành byte cục bộ, JPEG phân đoạn và các trường EXIF có thể đọc được bên trong một trình duyệt
Hình minh họa vector ToolAcre gốc

Hướng dẫn chi tiết về những gì thực sự xảy ra giữa việc thả JPEG trên trang và xem siêu dữ liệu của nó: các byte được đọc cục bộ, phân đoạn APP1 được định vị và các thư mục TIFF bên trong nó được giải mã trong JavaScript mà không cần đến máy chủ.

Tuyên bố cần kiểm tra: 'không có gì được tải lên' — tại sao trình kiểm tra siêu dữ liệu chỉ cần đọc byte đã có và cách xác nhận không có yêu cầu nào rời khỏi tab

Tuyên bố rằng một bức ảnh không được tải lên có thể kiểm chứng được hơn là mang tính trang trí. Công cụ này đọc Tệp đã chọn vào một ArrayBuffer, chuyển đổi nó thành byte và chuyển trực tiếp các byte đó đến trình đọc siêu dữ liệu. Tuyên bố về quyền riêng tư của nó giới hạn lời hứa một cách cẩn thận: ảnh được phân tích cú pháp trong tab trình duyệt, không có bản sao nào được lưu trữ và các yêu cầu phân tích được tiết lộ tách biệt với đường dẫn mã xử lý tệp.

Đọc tệp cục bộ bằng Tệp API - cách trình duyệt cung cấp cho công cụ một ArrayBuffer ảnh của bạn mà không có byte rời khỏi thiết bị

Bộ chọn tệp cung cấp đối tượng Tệp của trình duyệt và file.arrayBuffer() cung cấp nội dung của nó cho JavaScript đã chạy trên trang. ToolAcre thực thi mức trần 50 MB, sau đó xác định JPEG, PNG hoặc WebP từ chính các byte. Việc đọc cục bộ này không cần gửi biểu mẫu hoặc điểm cuối tải lên hình ảnh và kiểm tra cách ly mạng sẽ thực hiện cả ba định dạng được hỗ trợ mà không cần ghi lại yêu cầu.

Tìm phân đoạn APP1 — đi bộ các điểm đánh dấu JPEG từ SOI đến tiêu đề 'Exif' và bỏ qua các phân đoạn mang ICC hoặc XMP thay vào đó

Đối với JPEG, trình đọc bắt đầu sau điểm đánh dấu bắt đầu hình ảnh và đi theo các đoạn đánh dấu cho đến điểm đánh dấu bắt đầu quét. Nó nhận dạng các tải trọng APP1 bắt đầu bằng Exif và phân tích các tải trọng đó, trong khi XMP chỉ được phát hiện để xóa và ICC được cố ý giữ lại làm dữ liệu kết xuất. Mọi thứ từ điểm đánh dấu quét trở đi đều thuộc về đường dẫn ảnh nén thay vì báo cáo EXIF.

Giải mã tiêu đề TIFF và IFD — thứ tự byte (II hoặc MM), độ lệch thành IFD0 và các mục nhập 12 byte trỏ đến thư mục con Exif và GPS

Tải trọng EXIF chứa khối TIFF. Trình phân tích cú pháp đọc điểm đánh dấu thứ tự byte II hoặc MM, kiểm tra giá trị ma thuật TIFF và tuân theo giá trị bù trừ cho IFD0. Mỗi mục nhập thư mục cung cấp một thẻ, loại, số lượng và giá trị nội tuyến hoặc giá trị bù. Từ IFD0 mã chỉ tuân theo các con trỏ thư mục con Exif và GPS, giữ giới hạn truyền tải thay vì đuổi theo mọi cấu trúc riêng tư có thể có.

Biến các giá trị thẻ thô thành các trường có thể đọc được — ID thẻ, kiểu dữ liệu, số hữu tỉ và chuỗi ASCII cũng như lý do một số giá trị cần có bảng tra cứu

Các giá trị thô chỉ trở nên hữu ích sau khi loại và thẻ của chúng được diễn giải. Các trường ASCII trở thành chuỗi, kiểu số sử dụng thứ tự byte TIFF và các cặp hữu tỉ trở thành số sau khi đọc tử số và mẫu số. Từ điển thẻ gắn nhãn nhãn hiệu máy ảnh, kiểu máy, dấu thời gian, phần mềm, trường nối tiếp và giá trị GPS, sau đó phân loại vị trí và nhận dạng thiết bị trước các trường kỹ thuật ít nhạy cảm hơn.

Ví dụ hoạt động: ảnh điện thoại được phân tích cú pháp trên chuỗi chính

Sổ làm việc mô tả ví dụ này là chạy trong Web Worker, nhưng bảng điều khiển được vận chuyển sẽ gọi trực tiếp readMetadata sau khi chờ file.arrayBuffer(); không có công nhân nào tham gia vào con đường này. Do đó, điện thoại đã chọn JPEG sẽ được đọc và phân tích cú pháp trên chuỗi chính của trang, sau đó mọi vĩ độ và kinh độ đều được in dưới dạng số và bảng trường đầy đủ sẽ được hiển thị. Việc chỉnh sửa rất quan trọng vì việc xử lý cục bộ và xử lý công nhân là những yêu cầu khác nhau.

Nội dung này không bao gồm những gì — nội dung MakerNote, định dạng RAW, HEIC và vùng chứa video nằm ngoài hướng dẫn này và nằm ngoài công cụ

Người đọc cố ý không đầy đủ. Nó không giải mã các phần bên trong của MakerNote, các trường hình thu nhỏ IFD1, JPEG XMP nội dung hoặc các vùng chứa RAW, HEIC, AVIF, TIFF, GIF và SVG không được hỗ trợ. Phân đoạn EXIF bị hỏng bị bỏ qua nên không thể chặn việc xóa sau này. Báo cáo trống chỉ có nghĩa là trình phân tích cú pháp giới hạn này không tìm thấy trường nào có thể đọc được chứ không phải mọi kênh thông tin có thể đều vắng mặt.

Bài học rút ra: đọc siêu dữ liệu là một công việc cục bộ, cấp byte — Công cụ quyền riêng tư siêu dữ liệu hình ảnh thực hiện chính xác điều này, vì vậy bạn có thể kiểm tra trước khi chia sẻ mà không cần tin tưởng vào máy chủ

Đọc siêu dữ liệu là một công việc cấp byte cục bộ khi quá trình triển khai giữ các byte đã chọn trong tab và không thực hiện yêu cầu nào với chúng. Sử dụng báo cáo để xác định những gì trình phân tích cú pháp này có thể nhìn thấy, sau đó sử dụng hành động xóa riêng biệt khi cần một bản sao đã được làm sạch. Việc kiểm tra không bao giờ thay đổi ảnh gốc và mã nguồn cũng như thử nghiệm cách ly mạng cung cấp bằng chứng mạnh mẽ hơn huy hiệu xử lý trình duyệt chung.