序列化和反序列化
-
序列化serialize()
就是把一个对象变成可以传输的字符串 -
反序列化 unserialize()
就是把被序列化的字符串还原为对象,然后在接下来的代码中继续使用
序列化和反序列化本身没有问题,但是如果反序列化的内容是用户可以控制的,且后台不正当的使用了php中的魔法函数,就会导致安全问题。
常见的几个魔法函数
__construct() 当一个对象创建时调用
__destruct() 当一个对象销毁时被调用
__toString() 当一个对象被当作一个字符串使用
__sleep() 在对象被序列化之前执行
__wakeup() 将在序列化后立即被调用
举例
可参考 PHP 序列化/反序列化的方法函数
php中的魔术方法
PHP魔法方法/函数详解
一般通过代码审计可以发现这些漏洞
网友评论