安全岗位面试题更新 2026-08-05

请解释一下什么是不安全的反序列化,并阐述为什么反序列化过程会带来安全风险?

风险判断安全意识技术原理

考察说明

考查对反序列化漏洞原理及其危险性的理解。

回答思路

  1. 【回答框架 1】反序列化是将字节流恢复为对象的过程。不安全反序列化是指应用程序信任外部传入的序列化数据,在反序列化时未做严格校验,攻击者可构造恶意数据触发代码执行。
  2. 【回答框架 2】危险原因包括:攻击者利用语言特性(如PHP的魔术方法、Java的readObject)在反序列化过程中自动调用危险方法,形成利用链,可能导致远程代码执行、任意文件写入、DoS等。
  3. 【回答框架 3】防护思路:对反序列化数据做完整性校验(如HMAC签名)、使用安全的序列化格式(如JSON)、过滤危险类、限制反序列化来源、更新依赖库修补已知漏洞。
  4. 【关键点 1】本质是未校验的序列化数据被反序列化,导致攻击者控制对象过程。
  5. 【关键点 2】危险在于反序列化过程中可能自动执行代码,形成RCE等严重漏洞。
  6. 【关键点 3】防护重点包括数据签名、格式安全、类白名单和依赖更新。
  7. 【易错点 1】认为只有Java才存在反序列化问题,实际上PHP、Python等也常见。
  8. 【易错点 2】以为反序列化漏洞只能由readObject触发,忽略了其他魔术方法和入口。
  9. 【易错点 3】过度依赖黑名单过滤,绕过风险高,更需使用白名单和完整性校验。