車牌和地址加密之後,我隔天才敢刪掉舊的那一欄明文

約 4 分鐘

Futari 是給兩個人一起記生活帳的家計簿。除了每天的支出,它還有一頁記家裡一起照顧的東西,車和房子也在裡面,花在它們身上的錢都能掛在對應的那一台車、那一間房子底下。

記車就會記到車牌,記房子就會記到地址。這兩樣東西單獨看沒什麼,跟一個人的名字放在一起,就是找得到你家、認得出你車的資料。所以 5 月 29 日深夜,我把車牌和地址改成加密存放,畫面上預設遮起來,要看的人自己點一下才顯示。

加密上線的那個晚上,資料庫裡其實同時存著兩份:一份加密的,一份原本的明文。這是刻意的。App 裡還有好幾個地方在直接讀明文那一份,我不想一次全換,萬一哪裡出錯,連車牌都顯示不出來。先讓新舊兩份並存,再一個一個把讀的地方搬過去,最後再刪舊的。

問題是,「最後再刪」很容易變成「之後再說」。畫面上已經看不到明文了,我很想就這樣算了。可是只要有人能直接查資料庫,那一欄明文就還在那裡,包括我自己。換好了鎖,備用鑰匙卻還掛在門邊。

隔天下午我拆成兩步做。第一步只動畫面,不動資料庫。我把還在顯示車牌和地址的地方一個一個找出來:車子詳細頁的標題下面、選車輛的清單、加油紀錄的頁首、保險要選哪一台車的下拉選單、房子清單的卡片。標題那一行改成遮起來、點了才顯示的一列,其他幾個地方直接不顯示了。

第二步才是刪掉那兩欄。刪之前,我先確認開發環境和正式環境裡,每一筆舊資料都已經補上加密的那一份,還沒加密的筆數是零。刪欄位這種事做了就收不回來,所以這一步我在資料庫的變更檔上直接標了「破壞性」,提醒自己和之後看到的人,套上正式環境之前要再跑一次檢查。

編輯表單也得跟著改。以前打開編輯,車牌欄位會直接填著原本的車牌。現在伺服器根本不會把明文送到手機上,所以欄位一打開是空的;如果已經存過,就顯示「先前已加密」,旁邊一顆「清除」。不填就是不動,按清除才是刪掉,填了新的才是更新。孩子的資料早就是這樣處理的,車牌和地址這次跟它對齊。

真正刪掉的程式只有兩行,前面的準備卻花了兩天。我自己的看法是,加密只做到一半的時候,最危險的就是舊的那一份,因為所有人都以為它已經不重要了。

Futari 為什麼這麼在意這些,我在〈信任這件事,我拒絕把它寫成說明書〉寫過。想替家裡的車或房子建一筆,可以到作品集找到 Futari。

先不說了,我得去確認刪欄位那一步,有沒有乖乖套上正式環境。

這段 code 寫於 2026 年 5 月 29 日到 30 日,文章整理於 2026 年 10 月。