我的應用程序會經常連接到web服務以獲取json中的一些數據。android通過web加密json數據
有沒有一種方法可以在服務器端加密這些數據並在應用程序端進行解密,以便傳輸的數據安全可靠?另外,如果應用程序帶有自己的數據庫(sqlite數據庫文件),是否有可能任何使用此應用程序的人查看此數據庫(表,字段和內容)?
問候, 薩班
我的應用程序會經常連接到web服務以獲取json中的一些數據。android通過web加密json數據
有沒有一種方法可以在服務器端加密這些數據並在應用程序端進行解密,以便傳輸的數據安全可靠?另外,如果應用程序帶有自己的數據庫(sqlite數據庫文件),是否有可能任何使用此應用程序的人查看此數據庫(表,字段和內容)?
問候, 薩班
傳輸加密數據的最簡單方法是使用SSL(即https)進行應用程序和Web服務之間的通信。
如果您需要爲服務器設置自己的自簽名證書(而不是購買一個),您可能會遇到讓Android與之交談的問題,但這是可行的。有關提示,請參見this SO question。
關於閱讀數據庫,這可能是可能的。如果足夠確定,我會假設攻擊者可以訪問數據庫。如果您希望數據非常安全,則必須將數據庫存儲在加密文件中,並且每次打開應用程序時都要求用戶輸入密碼。 你必須決定你真正需要多少安全。
但是,當您通過網絡傳輸數據時,您絕對應該使用SSL加密數據。
我使用Base64編碼和解碼在網絡到encryt數據。
根據您使用的Web服務的類型,它將會或不會進行Base64編碼和解碼。你可以隨時在谷歌上查看別人編寫的代碼。
取決於您定位的Android版本。
從API級8個,最多:http://developer.android.com/reference/android/util/Base64.html
對於較低:http://www.frankdu.com/notes/2011/01/27/base64-encoding-with-android-2-1-or-earlier/
你也可以自己寫自己的編碼和解碼系統。 ;)
你可以使用加密來加密/解密json在android和server.In它非常簡單和安全。使用Base64並不是一種有效的方式,因爲任何人都可以解密。在此,您可以使用密鑰來加密和解密字符串。如果使用錯誤的密鑰解密,輸出將會錯誤。
感謝您提供的解決方案...我現在看看你的解決方案... – Sapan 2011-05-05 04:07:03
感謝您提供的答案。根據您的情況,資產文件夾中的應用程序提供的數據庫可以被攻擊者讀取。我提供了一個初始數據庫,然後讓用戶在服務器上使用db進行同步。在我的應用程序啓動時,我將資產文件夾中的數據庫文件複製到/ data/data/package/databases文件夾。那麼攻擊者是否也可以訪問這個數據庫呢?我試圖理解的是,如果我給我的應用程序提供最小的數據庫,然後讓用戶與服務器同步。因此,即使通過應用程序訪問打包數據庫,他也不會獲得太多信息。 – Sapan 2011-05-05 04:23:14
放置數據庫的位置並不重要,它可能仍然可以由確定的攻擊者_訪問phone_讀取,除非您加密和密碼保護數據庫。 – uvesten 2011-05-05 07:44:14