【发布时间】:2013-10-03 23:15:54
【问题描述】:
如果我的代码不对反序列化对象的状态或类做任何假设,反序列化不受信任的数据是否安全,或者仅仅是反序列化的行为会导致不希望的操作?
(威胁模型:攻击者可以随意修改序列化的数据,但只能这样做)
【问题讨论】:
-
如果序列化数据中包含个人信息,或者银行信息,那么绝对(存在安全风险)。这就是加密的用途。如果不对代码做出任何假设,就很难说出这一点。在某些代码库中它会是,而其他我认为不会。公共和私有变量的重点是保证某些状态是不可能的。反序列化不受信任的数据时,您将失去此保证。问题是你的代码是否有这样的保证,以及它们的重要性
-
这个问题是关于反序列化而不是序列化的危险。我理解后者,通信确实是加密的。
-
我提到了反序列化。以及不受信任的来源。
-
对于初学者来说,如果你的程序的正确性依赖于单例的单一性(或者甚至像实习实例这样的东西),除非你明确地管理返回的对象,否则存在潜在的风险。
-
@meriton 关键是,这是一个格式错误的要求。我可以创建一个类,这样任何反序列化都不会导致任何问题。我可以再做一个会引起问题的。所以对课程一无所知,你不能认为这是安全的
标签: java security serialization