簡體   English   中英

如何保護我的Android應用中的同步數據?

[英]How to secure the synced data in my Android app?

我正在構建一個包含帶有非常敏感數據的SQLite數據庫的Android應用。 由於任何對設備具有物理訪問權限的人都可以復制數據庫,因此我想到了一些解決方案來保護數據庫中的數據。 我們當然可以在將其輸入數據庫之前對其進行加密,但是由於這將阻止實際查詢數據庫的可能性,因此將有效地使數據庫無用。 另外:如果我們將密鑰存儲在應用程序中,則也將很容易檢索密鑰,並且加密將毫無意義。

因此,我們在登錄時將所有數據與服務器同步,然后有兩個選項:

  1. 在onStop()方法中刪除整個數據庫。 我認為這將是非常安全的,除了應用程序崩潰時,我認為它不會調用onStop()方法。 由於您可以手動銷毀該過程,因此我認為對設備具有物理訪問權限的人仍然可以訪問數據庫。 對?
  2. 使用內存中的SQLite數據庫。 根據這個SO答案,“ 與內存數據庫的每個新連接都會創建一個新的空數據庫。 ”。 這意味着您無法在“活動”之間共享它。
  3. 將同步的數據存儲在幾個Java列表/數組中,並從中獲取所有信息。 問題在於這些列表僅存在於一個活動中。 為了解決這個問題,我想在一個片段中創建完整的應用程序。 我還沒有開始嘗試這種方法,但是這似乎也不是正常的方法。

是否有人知道這些想法中的任何一個是否有意義,更重要的是,是否沒有更好/更便捷的方法來安全地跨應用活動保存數據? 歡迎所有提示!

這意味着您無法在“活動”之間共享它。

你當然可以。 使用單例SQLiteDatabase 無論如何,您都應該這樣做,以啟用跨多個線程的線程安全訪問。

將同步的數據存儲在幾個Java列表/數組中,並從中獲取所有信息。 問題在於這些列表僅存在於一個活動中。

如果您注意內存泄漏,可以再次使用單例或靜態數據成員。

但是,如果選擇使用“幾個Java列表/數組”,我不知道為什么要搞亂SQLite。 SQLite旨在將關系數據存儲在文件中,聽起來好像您不需要任何文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM