结论:核心原则是永远不要对用户可控数据调用 unserialize,改用 JSON 等无代码执行风险的数据格式。
①先全局搜代码里的 unserialize 调用点,逐个确认入参来源,凡是来自 cookie、GET/POST、缓存的都列为高危。
②如果业务必须用序列化,改用 json_encode/json_decode,或者 PHP 7 以上用带 allowed_classes 限制的 unserialize,白名单只放确需还原的类。
③审计魔术方法,重点看 __wakeup、__destruct、__toString 里有没有文件写入、命令执行、数据库操作,这些是 POP 链的落脚点。
④升级框架和依赖,很多反序列化链是靠已知组件的 gadget 拼出来的,版本越新可利用链越少。
⑤线上开 open_basedir 和禁用危险函数做兜底,降低一旦被利用后的影响面。