これは非常に広範な質問のように思えるかもしれませんが、どんな助けも大歓迎です。
Cajo プロジェクト (RMI を使用) を使用する Java で記述されたクライアント/サーバー ソリューションがあります。サーバーとクライアント間で転送される機密データを考慮して、ソリューションを可能な限り安全なものにしたいだけです。
これまでのところ、私の考えは、すべてのクラスを「最終」にし、サーバー内のすべてのクラスに対して「シリアル化できない」例外をスローすることです (RMI レジストリにバインドされたオブジェクトと、実際に必要なオブジェクトを除く)。もちろん転載可)。
他のアイデアを思いつく人はいますか?
誰かが悪意のあるクライアントを作成できることは知っています。リフレクションを使用してリモート オブジェクトの API を見つけることができるので、これを行うのは難しくありません。しかし、悪意のあるクライアントがアクセスするべきではないサーバー内のクラス/オブジェクトにアクセスするのを防ぐためにできることはありますか?
どうもありがとう
更新: 有益なヒントを提供してくださった皆様に感謝いたします。ご連絡が遅くなり申し訳ありません。安全なシステムを作るための私の現在の考え方は次のとおりです。
- クライアントとサーバー間で OpenVPN を使用します。つまり、アクセスするには物理クライアントにアクセスする必要があります。(注:以下の2点により、VPNは実際にはサーバーとオフィスLANの間になります。これで十分安全だと思います)
- サーバーとクライアント間の認証には、ユーザー名とパスワードを使用します (おそらく JBOSS を使用します)。これは、サーバー上で何かを行うために、攻撃者がユーザー名とパスワードを必要とすることを意味します。
- 実際にネットワーク経由で送信されるはずのオブジェクトを除いて、すべてのオブジェクトに対して「シリアル化できない」例外をスローします。これにより、機密オブジェクトがネットワーク経由で送信されなくなります。
それは公平に聞こえますか?何か不足している場合は修正してください。
さらなる更新:私が防ごうとしているものについて混乱があるようです。私が阻止しようとしているのは、誰かがサーバーを「ハッキング」することです。したがって、基本的にサーバーを悪用して、たとえばデータベース全体をダンプ/ドロップします。
ありがとう