昨天完成了 Email 提醒,但日記這東西本質上很私密,有些內容甚至可能「不想任何人知道」。
所以今天的任務就是 隱私與安全。不只是「只有自己帳號能看自己的日記」,還要考慮萬一資料庫真的外流,也不能讓別人一眼看懂。
因此我分成兩部分來做:
match /users/{uid}/diaries/{docId} {
allow read, write: if request.auth != null && request.auth.uid == uid;
}
意思是:只有登入、而且 UID 符合的人,才能存取自己資料夾下的日記。
Firestore 裡存的是一串密文,例如:U2FsdGVkX1+oHRzKfygZlGf...
(很長一串)
前端照樣可以正常顯示「今天在圖書館熬夜到 3 點」
問題是「金鑰」怎麼管理?如果金鑰只是寫死在程式碼裡,那還是等於明文
更好的做法是:金鑰來源可以是使用者的密碼、或一組在 localStorage 的隨機字串,不會上傳到雲端
幫我在情緒日記 App 加上「隱私與安全」功能。
=== 功能需求 ===
1. Firestore Rules
- users/{uid}/diaries/{docId}
- 只有 auth.uid == uid 才能讀寫
2. 本地加密
- 使用 CryptoJS 或類似函式庫
- 存日記:AES 加密(key 可暫用使用者 uid)
- 讀日記:AES 解密
- Firestore 裡存密文,前端顯示明文
Day 19 要來做 匯出/匯入(JSON/CSV)!這樣不僅能把所有日記備份下來,也能在需要時重新匯入,讓資料更有掌控感
理論上 Day21 才會提部署,但我先嘗試把作品掛上去了
霓的情緒日記 歡迎點進去玩玩!
有什麼想法或建議都歡迎跟我說~(拜託不要攻擊我小小的網站 QQ)