Java ベースのデスクトップ アプリケーションを開発しています。アプリケーション オブジェクト モデルから生成されたいくつかのデータを保持する必要があります (できればファイルに)。また、永続化されたファイルを保護して、他のユーザーがデータからオブジェクト モデルの詳細を取得できないようにする必要もあります。これらを行うための最良の戦略は何ですか? これらの要件は、デスクトップ アプリでは非常に一般的であるという印象を受けました。しかし、私はそれについて多くの有用な情報を見つけることができませんでした. 任意の提案をいただければ幸いです。
6 に答える
このファイルを変更する必要がない場合は、オブジェクト グラフをファイルにシリアル化できます。コンテンツはバイナリであり、記述されたクラスを使用してのみ読み取ることができました。
Java DB (Java 1.5 以降に同梱されていると思います) と Hibernate などの ORM ツールを使用することもできます。
編集
1.6 http://developers.sun.com/javadb/以降にバンドルされています
あなたの質問には 2 つの部分があります。1st: データを永続化するには? 2つ目:どうやって守る?
データを永続化する方法はたくさんあります。単純な XML、Java シリアライズから独自のデータ形式へ。「プレーンテキスト」だけではリバースエンジニアリングデータを防ぐ方法はありません。難しくすることはできますが、不可能ではありません。それを完全に不可能にするには、強力な暗号化を使用する必要がありますが、ここで問題が発生します。データを暗号化し、セキュア トークンを公開しない方法。アプリケーションで安全なトークンを配布している場合、それを見つけるのは時間の問題であり、問題は解決されます。そのため、インストール中にセキュア トークンを入力することはできません。ユーザーがアプリケーションを使用するために認証する必要がある場合、それは役立つはずですが、同じ問題です。次のオプションは、カスタムの保護された全単射アルゴリズムを使用してデータを難読化することです。そして最後のオプションは、データ形式を非公開にして何もしないことです。
最高の価値は、カスタム データ形式と難読化されたアプリケーションを使用した単純なデータ難読化 (XOR 素数) です。
XStreamは、単純な xml の読み取りとファイルへの書き込みを行う場合に機能します。Xstream を使用すると、任意の Java オブジェクトを取得してファイルに書き込み、ファイルから読み取ることができます。
Berkeley DB Java Edition ( http://www.oracle.com/database/berkeley-db/je/index.html ) などの組み込みデータベースを使用してみることができます。それらの直接永続層 API は、おそらくニーズに合っています。データベースの内容は、ディスク上のファイルに同期されます。ファイルを直接見るだけでは、データからオブジェクト モデルを把握するのは簡単ではありません。私はそれで良い経験をしました.それは電光石火の速さであり、デスクトップアプリケーションでうまく機能します.
ステートメントで暗示されているセキュリティが本当に必要な場合 (「... 永続化されたファイルを保護して、他のユーザーがデータからオブジェクト モデルの詳細を取得できないようにする」)、メモリ内のデータをシリアル化します (Java のシリアル化された形式に)。 、XML、または何でも)、そのバイトストリームをファイルに暗号化します。
「シリアル化」という言葉は次のとおりだと思います。
http://java.sun.com/developer/technicalArticles/Programming/serialization/