0

私は、ユーザーがオフラインになるアプリケーションに取り組んでいます。ユーザーが入力したデータを中央データベースと同期させたい。

アプリケーションはSwingにあり、Webサービスを使用して中央DBのデータを更新しています。

私はSQLiteを解決策として考えていますが、セキュリティについて心配しています。各クライアントシステムの懸念事項には複数のユーザーがいて、すべてのユーザーが特定のデータを持っています。SQLiteはこれをサポートしていますか?

このシナリオでSQLiteの他の選択肢はありますか?

セントラルDBとしてOracle10gを使用しています。SQLiteの役割は、ユーザーがオンラインになるまでデータを保存するローカルDBです。

編集::私はここでSQLiteファイルのセキュリティについて心配しています。私の最初の分析を通して、sqliteファイルにアクセスしている間の認証のような機能がないことがわかりました。私が今はっきりしていることを願っています。

4

1 に答える 1

1

SQLiteはユーザーごとの認証をサポートしていません(パスワードを使用できますが、データベースファイル全体で同じです)。データベースファイルへの読み取りアクセス権を持つユーザーはファイルを直接読み取ることができるため、ユーザーごとの認証はとにかく効率的ではありません。データを暗号化することもできますが、ユーザーがアクセスできる実行可能ファイルに復号化キーとアルゴリズムを保存する必要があります。

したがって、各ユーザーのローカルデータを保護する場合は、この責任をオペレーティングシステムに委任することをお勧めします。ユーザーごとに個別のデータベースファイルを現在のユーザーのプライベートユーザーディレクトリに保存するだけです(Windowsでは%appdata%、UNIXでは〜/)。ユーザーが管理者/root権限を持っていない限り、オペレーティングシステムは、ユーザーが他のユーザーディレクトリのデータにアクセスできないようにする必要があります。

もちろん、これは、アプリケーションの各ユーザーがオペレーティングシステムに個別のアカウントを持っている場合にのみ機能します。そうでない場合でも、公共の場所に保存されているユーザーごとに個別のデータベースを使用できますが、各ユーザーのパスワードから派生したキーを使用して各データベースファイルを暗号化します。

于 2013-01-11T08:12:25.480 に答える