abox.tools

語言: 繁體中文

把檔案傳給線上轉換器安全嗎?

老實的回答通常是:「多半沒事,但你沒法核實。」這一頁講上傳到底把你的檔案怎麼了,為什麼多數工具至今還這麼做,以及四項檢查,能看出你眼前這一個是不是非上傳不可。

以 Markdown 檢視

先說結論

大多數檔案、大多數時候,傳就傳了,沒什麼事。正經的轉換器幾小時內就把你發過去的東西刪掉,也對你的度假照片毫無興趣。

問題不在於他們說謊,而在於你根本沒辦法判斷他們有沒有說謊。檔案一旦離開你的機器,之後那些說法就全靠你信:留多久、誰夠得著、有沒有被複制進一個比刪除定時器活得更久的備份、公司被賣掉或者被攻破時它會怎樣。這些從外面一樣都看不見。

所以真正有用的問題不是「我信不信這個站」,而是「這件事非得讓我的檔案離開不可嗎」。越來越多的工作,答案是不用;而只要答案是不用,那個信不信的問題,你就不必回答了。

「上傳」到底做了什麼

一個轉換器讓你選檔案,然後給你看一條進度條,這時候你的瀏覽器正在把整個檔案逐位元組複製過網際網路,送到一臺別人擁有的計算機上。那臺機器把它寫進硬碟,跑一遍轉換,把結果寫回同一塊硬碟,再給你一個連結。

那一刻起,你的檔案至少存在於三個不是你選的地方:伺服器的硬碟、記下這次請求的各種日誌,還常常有一個為了讓你下載得快而快取了結果的 CDN。一份刪除策略得管得到這三處。多數會說自己管得到。這三處你一處都查不了。

還有一點值得知道:到那邊的不只是檔案本身。檔名跟著走,檔案裡你看不見的一切也跟著走。一張剛出手機的照片,通常帶著精確的拍攝 GPS 座標、時間、相機序列號,有時候還嵌著一張你裁剪之前的原圖縮圖。對畫面很小心的人,往往對這些不小心,因為螢幕上什麼都沒顯示給他們看。

為什麼多數工具還是要上傳

不是因為他們想要你的檔案,而是因為在網頁存在的大半時間裡,壓根沒有別的辦法。瀏覽器解不了影片,也沒法按指定品質重編一張圖,更別說解析檔案格式;而一臺裝著 FFmpeg 和 ImageMagick 的伺服器可以。上傳不是商業模式,那是工作唯一能做的地方。

這件事在不久前悄悄地不成立了。瀏覽器現在帶著 WebAssembly,能以接近原生的速度跑同樣那些編譯好的編解碼器;帶著 WebCodecs,能直接用上你機器裡本來就有的硬體影片編碼器;還有一套 Canvas 介面,能直接解碼和重編圖片。當年非伺服器不可的工作,如今就跑在那臺本來就拿著檔案的裝置上。

仍然有大量工具在上傳,其中一些理由是正當的:一條現成的處理流水線沒人想重寫、某個格式在瀏覽器這邊確實沒有解碼器、某件事對手機來說真的太重。也有不那麼正當的理由:帳號、配額和付費等級都長在伺服器上。一個完全跑在你瀏覽器裡的工具,是很難按次計費的。

四項你自己就能做的檢查

這幾項對任何工具都管用,包括這一個。沒有哪一項需要你聽信誰的話,而第一項大約花十秒。

1. 拔線

把頁面開啟,然後關掉無線網或者拔掉網線,再用一次。在你瀏覽器裡運作的工具,跟剛才完全一樣。上傳的工具當場就不動了,因為運作的那個東西已經夠不著了。

這是最強、也最難作假的一項,因為它沒法靠措辭回答。沒有網路,轉換要麼完成,要麼完不成。

2. 盯著「網路」面板

開啟瀏覽器的開發者工具,切到「網路」,然後用這個工具。頁面發出的每一條請求都在那裡列著,帶著大小。你那張 4 MB 的照片要是被傳上去了,列表裡就有一條 4 MB 的請求。要是離開這個頁面的最大的東西不過是幾 KB 的廣告,那就沒有。

按大小排序,看最上面幾條。你不需要看懂這些請求,你只需要留意有沒有哪一條跟你的檔案差不多大。

3. 讀一讀 Content-Security-Policy

檢視頁面原始碼,在靠上的位置找 Content-Security-Policy。它是這個頁面被允許聯絡的地址清單,而且是由你的瀏覽器強制執行的,不是靠這個站的良好意願:凡是不在清單上的,請求一律被拒,程式碼怎麼折騰都沒用。

要緊的那一條是 connect-src,它管著這個頁面可以把資料發到哪裡。裡面要是列著一個屬於你正訪問的這個站的地址,那這個頁面就能把你的檔案發過去。要是裡面什麼都沒有,或者只有廣告網路這類第三方,那它就發不了。

一個壓根沒有 Content-Security-Policy 的頁面,並不說明它有什麼問題,只說明這一項檢查對它無話可說。

4. 讀程式碼

最費事,也最有決定性。一個工具要是公開原始碼、而且發出來的就是原始碼本身,沒有構建那一層,那你瀏覽器取到的檔案,就是你能讀的檔案。在裡面搜 fetch、XMLHttpRequest 和 sendBeacon,頁面能把東西發出去的方法就這三條,看看它們被餵了什麼。

多數人不會真去做這件事。但「做得到」本身仍然要緊,因為一個誰也無從核實的說法,算不上一個說法。

「在你的瀏覽器裡跑」不等於什麼

這話得說準,因為它被用得很鬆,而本站既然這麼要求別人,就得用同一把尺子量自己。

什麼時候上傳確實沒問題

這篇不是在說所有上傳都是錯的。內容不敏感、傳上去更省事,那就傳;工作對你的裝置來說確實太重,那就傳;格式在瀏覽器這邊確實沒有解碼器,那就傳;或者你用的本來就是一家你已經有關係、條款也真讀過的服務,那也傳。

要更小心的,是那些你不會公開發出去的檔案:身份證件、醫學影像、合同,任何帶著你無意分享的住址或者面孔的東西,還有那種你壓根沒看過位置資訊的照片。這些,寧可選一個你能核實的工具,而不是一個你只能信任的工具。這不是因為被信任的那個多半會辜負你,而是因為在能核實的那個面前,這個問題根本不會出現。

這四項檢查,本站自己答一遍

一篇讓別人去查、自己卻要求豁免的指南,那也太奇怪了。所以,按順序來:

例外也擺在明處,不埋著:本站帶 Google 廣告和一個訪問統計,兩者都要跟 Google 說話,但關於你檔案的資訊,一條都不給它們;另外,圖片轉影片可以從你貼進去的網址取一張圖,那臺伺服器因此看得到你的 IP。隱私頁把這兩件事都寫全了。

這裡每個工具都是這麼做的:能壓到你指定大小的圖片壓縮、影片裁剪、專治本頁上面說的那些隱藏資料的 EXIF 檢視與清除、圖片轉影片,還有圖片轉 PDF。全部免費,不用帳號,也沒有一個有地方可以把你的檔案發出去。

每個工具頁面上的那塊面板:一行說明檔案從不離開瀏覽器,下面是支撐它的事實,還有一項即時檢查報告本頁沒有發出任何網路請求。
四項檢查裡的最後一項,答案就在頁面上,而不是在一段文字裡:這個計數是頁面對自己做的,同樣的計數你也可以在自己的瀏覽器裡做一遍。