2013-01-10 259 views
0

我正在處理用戶上下線的應用程序。我希望用戶輸入的數據與中央數據庫同步。使用sqlite數據庫

該應用程序位於Swing中,並使用Web服務更新中央數據庫中的數據。

我在想SQLite是一種解決方案,但我擔心安全問題。每個客戶端系統中的關注點將有多個用戶,每個用戶都有他的具體數據。 SQLite是否支持這個?

在這種情況下,SQLite還有其他的選擇嗎?

我有Oracle 10g作爲我的中央數據庫。 SQLite的作用是存儲數據,直到用戶上線爲止的本地數據庫

編輯::我在這裏關注SQLite文件的安全性。通過我的初步分析,我發現在訪問sqlite文件時沒有身份驗證等功能。 希望我現在清楚。

+1

你的問題不清楚。你是否在問SQLite是否會通過網絡更新的本地數據庫,或者你問的是在Web服務器上使用的數據庫?如果是前者,每個用戶擁有自己的SQLite數據庫文件是完全合理的,因此它與文件系統一樣安全。 –

+1

http://db.apache.org/derby/? – StanislavL

+0

一個相關的問題是http://stackoverflow.com/questions/8107141/security-and-sqlite-in-android – user1929959

回答

1

SQLite不支持每用戶身份驗證(您可以使用密碼,但對於整個數據庫文件它是一樣的)。無論如何,每用戶身份驗證效率都不高,因爲具有對數據庫文件的讀取權限的用戶可以直接讀取文件。您可以對數據進行加密,但您必須將解密密鑰和算法存儲在可執行文件中,用戶可以在其中進行訪問。

當你想保護每個用戶的本地數據時,我會建議將這個責任委託給操作系統。只需將每個用戶的個人數據庫文件存儲在當前用戶的私人用戶目錄中(windows上的%appdata%,unix上的〜/)。只要用戶沒有管理員/ root用戶權限,操作系統應該阻止他們訪問其他用戶目錄中的數據。

這當然只適用於您的應用程序的每個用戶在操作系統上也有個人帳戶。如果情況並非如此,您仍然可以爲存儲在公共位置的每個用戶使用單獨的數據庫,但使用從每個用戶的密碼派生的密鑰來加密每個數據庫文件。