详解PHP序列化和反序列化原理

时间:2018-01-16

既然上文中提到的自描述功能,那么序列化结果中保存了对象的类型,且php是动态类型语言,那么我们就可以来做个简单的实验.

class fobnn
{
 public $hack_id;
 public $hack_name;
 public function __construct($name,$id)
 {
  $this->hack_name = $name;
  $this->hack_id = $id;
 }
 public function print()
 {
  var_dump($this->hack_name);
 }
}
$obj = new fobnn('fobnn',1);
$obj->print();
$serializedstr = serialize($obj);
echo $serializedstr.PHP_EOL;;
$toobj = unserialize($serializedstr);
$toobj->print();
$toobj2 = unserialize("O:5:\"fobnn\":2:{s:7:\"hack_id\";i:1;s:9:\"hack_name\";i:12345;}");
$toobj2->print();

我们修改hack_name反序列化的结果为int类型, i:12345

string(5) "fobnn"
O:5:"fobnn":2:{s:7:"hack_id";i:1;s:9:"hack_name";s:5:"fobnn";}
string(5) "fobnn"
int(12345)

可以发现,对象成功序列化回来了!并且可以正常工作!. 当然php的这种机制提供了灵活多变的语法,但也引入了安全风险. 后续继续分析php序列化和反序列化特性带来的安全问题.

以上就是我们整理的关于PHP序列化和反序列化原理的全部知识内容,感谢你对的支持。

您可能感兴趣的文章:

  • PHP多种序列化/反序列化的方法详解
  • 深入浅析PHP的session反序列化漏洞问题
  • PHP 序列化和反序列化函数实例详解
  • 详解PHP中的序列化、反序列化操作
  • 深入解析PHP中SESSION反序列化机制
  • php中序列化与反序列化详解
  • PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
  • 详解PHP序列化反序列化的方法
  • php json与xml序列化/反序列化
  • 解析PHP多种序列化与反序列化的方法
  • 共2页:
  • 上一页
  • 2/2下一篇
    上一篇:基于 Swoole 的微信扫码登录功能实现代码 下一篇:PHP使用两个栈实现队列功能的方法

    相关文章

    最新文章