
Android 資安 | 使用 SQLCipher 替 Room 資料庫加密
前言 對,又是資安檢測。XD 前一篇 Android 資安 | 螢幕覆蓋攻擊(Tapjacking)防護筆記 就是因為資安檢測所做的調整,而這次被檢測出來的項目,是 4.1.2.3.4 行動應用程式應避免在關閉及登出後將敏感性資料儲存於冗餘檔案或日誌檔案中。 報告的詳細說明指出,App 本地儲存的 SQLite 資料庫檔案,被檢測出包含使用者的敏感資訊(如行動電話號碼)。按照報告的步驟,確實能輕易地從資料庫檔案中讀取到這些未經保護的資料。 要讓檢測單位篩檢不出敏感資訊的方法有很多,例如只針對敏感資料欄位加密。但考量到 App 尚處於開發階段,同時提早因應未來可能會越來越嚴格的資安標準,直接將整個 SQLite 資料庫加密,似乎是更好的方法, 廢話不多說,我們就來看看如何在 Android 上,使用 SQLCipher 為 Room 資料庫進行加密吧~ 什麼是 SQLCipher 首先,先認識一下本篇文章的主角,SQLCipher。 SQLCipher 是由 Zetetic 公司所開發與維護的 SQLite 加密套件,它透過簡單的擴充,為 SQLite 資料庫提供了透明、可靠的加密層。 它的主要特性包含: 透明加解密:在資料讀取與寫入時,SQLCipher 會在背景自動進行加解密,開發者無需修改原有的 SQL 查詢邏輯。 可靠的加密演算法:採用 AES-256 位元演算法,這是目前公認的安全標準。 頁面級加密:對資料庫的每一頁(Page)獨立加密,確保資料的完整性與安全性。 跨平台支援:支援 Android, iOS, .NET, macOS, Linux 等多個平台。 彈性的授權:免費的社群版到功能更豐富的付費商用版都有,開發者可根據專案需求選擇。 大概認識 SQLCipher 後,就來看看在 Android 上該如何與 Room 搭配實作吧! 整合 SQLCipher 與 Room 步驟 1:加入 Gradle 依賴 首先,在 app module 的 build.gradle.kts 或 build.gradle 檔案中,加入 SQLCipher 的依賴。 ...
