我试图理解反序列化攻击,所以我想到了这个例子,如果我误解了某些内容,如果你能纠正我,那会很有帮助。
我有这个小说课。
public class Player{
String name;
int attackStrength;
public Player(String name){
this.name = name;
this.attackStrength = Random.nextInt(10);
}
}
如果我序列化这个类,它将为我提供一个表示对象实例及其内部值(name
、attackStrength
)的字节数组。
如果我编辑字节数组并读回。我可以将表示 attackStrength
的字节修改为 50!然后反序列化数组,现在我有了一个被黑的角色。
这就是这种攻击形式背后的想法吗?
最佳答案
假设Player
实现了java.io.Serialized
,那么反序列化将绕过构造函数,前提是它处于对手可以提供原始数据的环境中。 Guideline 8-3 中对此进行了处理。 Java 编程语言安全编码指南,版本 4.0。
关于java - 反序列化攻击的愚蠢示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21048800/