2012-01-04 14 views
0

我正在開發這個Android應用程序,用戶可以更新他們的SQLite數據庫到Web服務器上的最新版本。一切工作正常,用戶點擊應用程序上的按鈕,最新版本的數據庫被下載到Android。有什麼辦法來驗證一個Android應用程序對PHP Web應用程序

這些用戶只是安裝應用程序,並沒有必要驗證個人用戶(用戶沒有用戶名/密碼)。即:每個人都使用相同的數據庫。數據根本不是用戶特定的。而且不需要建立雙向同步。

問題是任何人都可以訪問(下載)數據庫。我們必須防止其他人手動下載數據庫。數據庫將被託管在一個使用php的Apache web服務器中。我可以實現php代碼來控制對SQLite數據庫的訪問(更新文件)。

有沒有什麼辦法可以在PHP中驗證我們在Android手機上製作的應用程序,這樣只有該應用程序的用戶才能直接將數據庫下載到手機中。

P.S. 我已考慮將密碼硬編碼到可以驗證下載請求的應用程序中。但是,密碼將通過靜態硬編碼的字符串。我對使用時間旋轉密碼算法非常謹慎,因爲在其他時區或不同步時鐘的用戶將無法更新其數據庫。

回答

2

您可以將手機應用程序和服務器中的共享祕密,然後得到每一個現在,然後從WebService隨機密鑰老調重彈,並以此作爲憑證:

Android Phone       Server 
--------------------------------------------------------------------- 
"SharedSecret"       "SharedSecret" 
getRandomKey()     <---- "This is some randomKey currently valid" 

Authentication: 
sha256(RandomKey + SharedSecret) <---> sha256(RandomKey + SharedSecret) 
相關問題