PHP 反序列化——入门

0x00 引言

什么是反序列化

  1. 序列化
    • 类对象在存储的过程中需要将对象的信息转换为可以传输的形式,故将对象进行序列化
    • 序列化的结果将以字符串的形式存储在临时或持久性存储区,以便对该对象的二次读取
    • 用法:serialize()
  2. 反序列化
    • 在对类对象进行使用或者读取时,从存储区读取该字符串,对字符串进行反序列化操作,重新创建该对象
    • 用法:unserialize()

类对象的序列化

<?php
	class student{
		public $name = 'xiaoming';
		public $age = 20;
		public $score = 60;
	}
	$a = new student();
	serialize($a);
//$a='O:7:"student":3:{s:4:"name";s:8:"xiaoming";s:3:"age";i:20;s:5:"score";i:60;}'
?>
  1. 定义类:

    • 使用class student定义一个名字为student的类
    • 这个类中一共有三个Public属性
  2. 创建类对象

    • 使用new student(),创建一个student类对象,并将该对象赋给$a
  3. 对类对象进行序列化

    • 使用serialize($a)对类对象$a进行序列化,序列化结果为O:7:"student":3:{s:4:"name";s:8:"xiaoming";s:3:"age";i:20;s:5:"score";i:60;}
  4. 序列化结果分析

    ### O:7:"student":3:{s:4:"name";s:8:"xiaoming";s:3:"age";i:20;s:5:"score";i:60;} 
    1. O-Object-对象
    2. 7-len(ObjectName)-对象名称长度
    3. student-ObjectName-对象名称
    4. 3-count(variable)-属性个数
    5. s-String-字符串
    6. 4-len(String)-字符串长度
    7. name-StringValue-字符串值
    ### Less...
    
posted @ 2020-09-22 20:52  H0n92x  阅读(94)  评论(0)    收藏  举报