目次 | 前の項目 | 次の項目 Java オブジェクト直列化仕様


A.5 クラス特有の直列化メソッドの作成

直列化復元されたオブジェクトが、保証されるべきである不変式のセットを壊すような状態にならないように、クラスが独自の直列化と直列化復元のメソッドを定義することができます。あるクラスのデータメンバ間で維持する必要がある不変式のセットがある場合、これらの不変式について知ることができるのはそのクラスだけなので、これらの不変式を検査する直列化復元メソッドを提供するかどうかは、そのクラスの作成者次第です。

セキュリティを重視した実装を行う際には、直列化可能クラスの readObject メソッドが実際に public コンストラクタでなければならず、そのように扱う必要があります。これは、readObject メソッドが暗黙的である場合と明示的である場合のどちらにもあてはまります。readObject メソッドに提供されたバイトストリームが、適切に構築された正しいタイプのオブジェクトを直列化することによって生成されると想定するのは危険です。より防御性に優れたプログラミングを行うには、構築中のオブジェクトに悪影響を及ぼそうとする悪意あるユーザによってバイトストリームが提供されることを想定する必要があります。

このことは、セキュリティを関知しない場合でも重要です。 ディスクファイルが壊れ、直列化データが無効になることも起こり得ます。したがって、そのような不変式を検査することは、単にセキュリティのためだけではなく、有効性を確保する手段でもあります。しかし、これを行うことができるのは、特定クラスのコードの中だけです。 これは、どの不変式を維持し、検査するかを直列化パッケージで判断する方法がないからです。



目次 | 前の項目 | 次の項目
Copyright © 1997-1999 Sun Microsystems, Inc. All Rights Reserved.