0

JAVA (J2SE) でデスクトップ アプリケーションを開発しています。
私のアプリ。ユーザーに関するデータを保存します。アプリ。マルチユーザーで、単一のステーションにインストールされます。
各ユーザーは、ファイル システムに保存する必要のあるドキュメント (画像、音声など)
を持つことができます。これらのファイルを、権限のないユーザーが直接アクセスできないように保護する必要があります。
ユーザーはアプリ自体で定義されます(アプリケーションからのみファイルにアクセスできる必要があります)

これらのファイルを不正アクセスから保護するにはどうすればよいですか?

ファイルを別のシステムに保存し、ネットワーク経由でアクセスすることを考えました。
JAVA でこれ (安全なネットワーク コンピューターにファイルを保存/取得) を行うにはどうすればよいですか?

これは良い方法ですか?より良い解決策はありますか?

ありがとう

編集:
説明:
私のユーザーはアプリケーションで定義されています:すべてのユーザーが同じコンピューターを使用します。すべてのユーザーが OS で同じユーザー名でログインします。各ユーザーは、自分のユーザー/パスを使用してアプリにログインします。各ユーザーは、アプリケーションが決定するファイルにアクセスできる必要があります。
そのため、ユーザーはファイルマネージャーを開いて、ファイルが保存されているディレクトリをトラバースしてコピーすることはできません (アクセス権がありません)。

4

3 に答える 3

1

すべてのユーザーが同じ OS ログイン アカウントを使用するため、OS の機能を使用してアクセス制御を強制することはできません。OS は全員を 1 人の人物として認識するためです。別のコンピューターを必要としない (それほど良くない、または実際には非常に悪い) 解決策は 1 つしか思いつきません。それは、各ユーザーのパスワードでファイルを暗号化することです。ただし、これは、ユーザーがパスワードを変更するたびにすべてのファイルを再暗号化する必要があることを意味します。これにより、許容できない遅延が発生し、多くの計算能力が使用されます。

ユーザーから情報を隠し、プログラムからのアクセスのみを許可する方法は他にもたくさんあります。非表示にすることで、ほとんどの平凡なユーザーはデータにアクセスできなくなりますが、プログラミング スキルを持つ決心したユーザーは、データにアクセスできるようにすることができます。簡単な例は、プログラム内のすべてのバイトを xor したり、固定パターンの数でバイトを並べ替えたりすることです。データがそれほど重要でない場合、これは可能な「解決策」です。

別のコンピューターを必要としない他の方法があるかどうかはわかりません。

そのため、別のコンピューターに情報を保存するという選択肢しかありません。可能だと思いますが、詳細はこちらではわかりません。


次に、この問題があります。ユーザー A が自分のアプリ アカウントからファイルを開き、それを操作してから、アプリ アカウントからログアウトし、共通 OS アカウントからログアウトしてから、ユーザー B が共通 OS アカウントにログインします。ユーザー A がアプリ アカウントからログアウトした後、ユーザー B がユーザー A が作業していたファイルを見ることができないことを確認する必要があります。

これをアプリで処理する必要があるかどうかはわかりません。

于 2012-05-29T08:00:19.043 に答える
0

1 つのオプションは、SFTPを使用することです。このようにして、SFTP セキュリティ機能を活用できます。しかしもちろん、これには配管コードを書く必要があります。

于 2012-05-29T07:22:54.283 に答える