我正在創建一個應用程序,用戶在遊戲中執行某些操作,並將這些操作記錄在SQLite數據庫中。在遊戲結束時,應用程序通過屏幕顯示這些日誌,遊戲管理員可以讀取這些日誌(例如,由遊戲管理員在看屏幕時進行物理讀取)。有沒有一些方法讓參賽者操縱數據庫,如果不是,有什麼安全措施阻止他們這樣做?是否可以在手機上訪問Android應用的SQLite數據庫?
回答
數據庫存儲在/data/data/your.applications.package/databases
。通常情況下,此位置只能由用戶訪問爲應用程序創建的Android操作系統。沒有其他用戶能夠訪問這個位置,除非設備是固定的。然後,任何用戶都可以訪問手機上的任何位置並操作數據。
所以,如果你想防止用戶作弊,你需要一些方法來檢查數據庫中的值是否未觸及。也許你可以在服務器上存儲某種指紋來檢查它。
這也可以在所有官方Google Dev設備上訪問。另外,如果用戶需要服務器對數據庫進行身份驗證,爲什麼不將結果發送到服務器(在更改時)。 – 2011-05-23 14:21:38
即使將指紋存儲在數據庫本身也不錯(依靠互聯網連接對用戶體驗不利)。因爲它很容易改變數據庫的價值,即使是我15歲的女兒也知道如何改變Android上的數據庫值,以便在遊戲中作弊。它很難更改並重新編譯根設備上的程序代碼。 – hamish 2016-12-03 02:57:52
是,用戶可以檢查,當通過ADB通過USB連接更改數據庫:http://developer.android.com/guide/developing/tools/adb.html#shellcommands
更新:
已解鎖裝置或谷歌官方的開發設備這僅適用於:Why do I get access denied to data folder when using adb?
儘管如此,這將允許用戶訪問數據庫並更改遊戲結果。所以你不能依靠數據庫不能訪問..
即使在沒有根的設備上? – Flo 2011-05-23 12:39:19
我不這麼認爲,並非沒有根源,因爲每次我嘗試發出命令時,我都會拒絕訪問。 編輯 - 我只是試過了,不,你不能僅僅通過使用adb shell和usb來更改或檢查數據庫信息。 – Hades 2011-05-23 12:43:59
啊,是的。它必須是根植的或官方的谷歌開發設備(這是我所擁有的):http://stackoverflow.com/questions/1043322/why-do-i-get-access-denied-to-data-folder-when-使用-adb – 2011-05-23 13:12:26
是的,只要您是開發人員,您可以通過編程方式完成。以下是適用於SQLiteDatabase的Android文檔。
下面是與SQLiteDatabases編程工作的一些鏈接:
在應用程序中的SQLiteDatabase應該是 '沙盒' 特定應用程序,這意味着只要開發人員沒有提供任何其他應用程序應該能夠獲得該數據用ContentProvider訪問它。因此,爲了回答您的最終問題,不,應該沒有辦法讓參賽者操縱數據庫,除非開發人員已經允許。
除非您向用戶發放設備,並且您仔細觀察他們對它們所做的操作,爲了確保不會對任何人造成危險,您需要使用隱藏在強烈混淆的應用程序代碼中的機制對數據庫中的條目進行數字簽名。即使這隻會讓它更難。
請注意,除非遊戲邏輯本身的關鍵部分在服務器中實現,否則使用服務器無助於此;如果用戶知道如何僞造您的簽名機制來編寫假數據庫條目,他們還可以將假報告發送到您的服務器。
- 1. 應用程序是否可以訪問智能手機上的所有數據
- 2. 是否可以在Android SQLite數據庫上禁用WAL?
- 3. 是否可以從android應用程序中訪問手機的相機?
- 4. Android - 如何從內部手機訪問sqlite數據庫?
- 5. Android - SQLite數據庫訪問
- 6. 是否可以在Android手機上創建手機應答機程序?
- 7. C/C++庫是否可以在Android手機上工作
- 8. 是否可以從Java訪問SQLite數據庫或(SqLite的Sql瀏覽器)?
- 9. 我們是否可以直接訪問核心數據的SQLite數據庫
- 10. 檢查Android手機是否可以訪問互聯網
- 11. 如何在Android手機上開發時訪問數據庫?
- 12. 多個應用程序可以訪問SQLite數據庫嗎?
- 13. Flex Web應用程序可以訪問sqlite數據庫嗎?
- 14. 是否可以使用php和javascript訪問相同的sqlite數據庫?
- 15. 在PhoneGap中訪問Android SQLite數據庫
- 16. 如何存儲用於在Android手機上訪問的數據
- 17. 在手機上的Android數據庫
- 18. 如何在無根Android手機上放置sqlite數據庫?
- 19. Android在手機上瀏覽SQLite數據庫
- 20. 是否可以在Android平板電腦上模擬Android手機?
- 21. Android的全球訪問SQLite數據庫
- 22. Android的SQLite數據庫訪問
- 23. LG手機無法訪問SqLite數據庫
- 24. 如何在黑莓手機上訪問本地sqlite本地數據庫?
- 25. 調試android:連接到手機上的sqlite數據庫
- 26. 檢查sqlite數據庫是否在android
- 27. 是否可以在Android中使用ContentProvider並直接訪問數據庫?
- 28. Android手機應用程序數據庫
- 29. 是否可以使用Android數據庫的iPhone應用程序?
- 30. 是否可以通過網絡應用訪問手機的聯繫人?
所以你想連接到Android設備,並閱讀存儲在應用程序'SQLiteDatabase'中的數據? – 2011-05-23 12:28:52
更具體地說:我想阻止應用程序的用戶(不是開發人員)操縱數據庫。出於所有實際的目的,我們還可以假設手機處於離線狀態,直到遊戲結束時才與遊戲服務器(或遊戲官員)進行通信。 – runaros 2011-05-23 12:47:30