首页/安全/漏洞与攻击面速查/反序列化风险原理
本包目录(294 条)
漏洞基础与评分46 条
Web 漏洞原理与防护55 条
主机与服务风险面53 条扫描与验证方法50 条补丁与修复管理45 条暴露面收敛45 条

反序列化风险原理

反序列化把字节流还原为对象,若数据源不可信且在还原过程中触发方法调用(Java readObject、PHP unserialize、Python pickle 等),可能形成代码执行;核心原则是不要把不可信数据交给原生反序列化。

漏洞与攻击面速查安全更新于 2026-10-12
高危函数Java ObjectInputStream、PHP unserialize、Python pickle、Ruby Marshal
触发条件类路径中存在可被拼接利用的类,且数据可控
判断要点数据是否来自用户?是否存在危险类?两者同时出现风险显著

安全替代示例

安全替代示例
Java:改用 JSON(Jackson/Gson)并禁用多态类型解析
PHP:改用 json_decode;必须 unserialize 时用 allowed_classes 白名单
Python:改用 json;避免 pickle.loads(用户输入)
组件升级可减少可用链,但不能替代代码层改造:应把反序列化入口改为数据格式解析。

易错点

  • 认为『只在内网传输就安全』:横向移动阶段内网数据同样不可信

数据来源与参考

  • OWASP Deserialization Cheat Sheet
  • Oracle Java 文档(ObjectInputStream 安全说明)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌