java - 反序列化攻击的愚蠢示例

标签 java security serialization deserialization exploit


我试图理解反序列化攻击,所以我想到了这个例子,如果我误解了某些内容,如果你能纠正我,那会很有帮助。

我有这个小说课。

public class Player{
    String name;
    int attackStrength;

    public Player(String name){
        this.name = name;
        this.attackStrength = Random.nextInt(10);
    }   
}

如果我序列化这个类,它将为我提供一个表示对象实例及其内部值(nameattackStrength)的字节数组。

< p> 该小说类随机创建攻击强度,最大值为 10。

如果我编辑字节数组并读回。我可以将表示 attackStrength 的字节修改为 50!然后反序列化数组,现在我有了一个被黑的角色。

这就是这种攻击形式背后的想法吗?

最佳答案

假设Player实现了java.io.Serialized,那么反序列化将绕过构造函数,前提是它处于对手可以提供原始数据的环境中。 Guideline 8-3 中对此进行了处理。 Java 编程语言安全编码指南,版本 4.0。

关于java - 反序列化攻击的愚蠢示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21048800/

相关文章:

java - DI 的部分模拟?

java - 为什么库更喜欢在边缘情况下重新计算不可变对象(immutable对象)的哈希码?

ios - 禁用 App Transport Security 和潜在的下层客户端中断

java - 如何使用可序列化类

c# - C# 中列表的通用序列化

java - 撤消/重做功能 Java 的对象序列化

java - Oracle 存储过程结构化参数

java - 将大文本解析到文本字段,如何在文本开头设置 View 位置

javascript - 将 CORS 与 AWS API Gateway 结合使用有哪些安全隐患?

asp.net - 这个新的 ASP.NET 安全漏洞有多严重?我该如何解决它?