Java 序列化是否有不安全的地方?

Java 序列化是否有不安全的地方?,java,security,encryption,serialization,Java,Security,Encryption,Serialization,我遇到了哪些州: 规则9:使你的类不可序列化 序列化是危险的,因为它允许对手掌握对象的内部状态。” 虽然我能理解作者的意思,但为什么不能只加密任何序列化数据呢?如果允许数据序列化的序列化不安全,那么正确的替代方法是什么?我认为作者的意思是,默认情况下,您应该使类不可序列化。也就是说,如果您有意要序列化您的类,那么就这样做吧 至于替代方案,您可以创建对象状态的json/xml表示,而无需透露实现的内部内容 你也可以像你建议的那样加密这些位。有关如何使用位旋转的简单演示可以在中找到。Bloch《有效

我遇到了哪些州:

规则9:使你的类不可序列化

序列化是危险的,因为它允许对手掌握对象的内部状态。”


虽然我能理解作者的意思,但为什么不能只加密任何序列化数据呢?如果允许数据序列化的序列化不安全,那么正确的替代方法是什么?

我认为作者的意思是,默认情况下,您应该使类不可序列化。也就是说,如果您有意要序列化您的类,那么就这样做吧

至于替代方案,您可以创建对象状态的json/xml表示,而无需透露实现的内部内容


你也可以像你建议的那样加密这些位。有关如何使用位旋转的简单演示可以在中找到。

Bloch《有效Java》第11章第76项介绍了这一点。您需要仔细读回序列化类,以防自创建以来有人对其进行了更改。基本上,您需要一个防御性的
readObject()
方法。

这是一个非常令人满意的链接。非常感谢。