(日更)PHP反序化漏洞解析(2) PHP序列化/反序列化过程

本文详细介绍了PHP序列化函数serialize和unserialize的工作原理,包括如何通过__sleep和__wakeup魔法方法进行对象状态管理和资源处理。通过实例演示了如何使用这些函数进行对象序列化与反序列化的过程。

上文中我们简单介绍了下PHP序列化,及为什么要序列化。

弄清楚前面2个知识点后,理解这个过程会更容易。

*****PHP语言中常用的序列化和反序列化函数有serialize,unserialize,json_encode和json_decode.

*****这里介绍serialize,unserialize函数。

目录

serialize函数

unserialize函数


serialize函数

当序列化对象时,PHP在序列化动作之前调用魔法函数 __sleep,这样就允许对象在被序列化之前做任何清楚操作

魔法函数:在php的语法中,有一些系统自带的方法名,均以双下划线开头,它会在特定的情况下被调用。即所谓的魔法函数。

__sleep() 当调用searialize()方法时调用,返回值为数组,表示需要序列化的数据项.

总结:serialize函数使用之前,必须要先调用___sleep函数。

 这里简单介绍一个例子。

<?php

class Student
{
	public $name = '';
	public $num = 0;
	public $subject='';
	public $grade='';
}

$student = new Student();
$student->name = 'OTTO';
$student->num = 1;
$student->subject='math';
$student->grade=65;
	

$str = serialize($student);
echo $str.'<br>';

输出如下:

O:7:"Student":4:{s:4:"name";s:4:"OTTO";s:3:"num";i:1;s:7:"subject";
s:4:"math";s:5:"grade";i:65;}<br>

O:7:"Student":4:{s:4:"name";s:4:"OTTO";s:3:"num";i:1;s:7:"subject";
s:4:"math";s:5:"grade";i:65;}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值