PHP反序列化(原理)
一.PHP面向对象编程
1.面向对象编程的基本概念
在面向对象的程序设计OOP中,对象是一个由信息及对信息进行处理的描述所组成的整体,是对现实世界的抽象。
对象的主要三个特性:对象的行为,对象的形态,对象的表示
二.PHP序列化和反序列化
1.有时候需要把一个对象在网络上传输,为了方便传输,可以把整个对象转化为二进制串,等到达另一端时,再还原为原来的对象,这个过程称之为串行化(也叫序列化)
2.有两种情况我们必须把对象序列化:
把一个对象在网络中传输的时候
把对象写入文件或是数据库的时候
3.序列化与反序列化过程
序列化:就是把对象转化为二进制的字符串,使用serialize()函数
反序列化:把对象转化的二进制字符串再转化为对象,使用unserialize()函数
三.PHP反序列化漏洞原理
1.序列化与反序列化本身没有任何问题
2.但是如果反序列化的内容是用户可以控制的
3.且后台不正当的使用了PHP中的魔法函数
4.就会导致安全问题
5.当传给unserialize()的参数可控时,我们可以通过传入一个精心构造的序列化字符串,从而控制对象内部的变量甚至是函数。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
