PHP反序列化(原理)

一.PHP面向对象编程

1.面向对象编程的基本概念

在面向对象的程序设计OOP中,对象是一个由信息及对信息进行处理的描述所组成的整体,是对现实世界的抽象。

对象的主要三个特性:对象的行为,对象的形态,对象的表示

二.PHP序列化和反序列化

1.有时候需要把一个对象在网络上传输,为了方便传输,可以把整个对象转化为二进制串,等到达另一端时,再还原为原来的对象,这个过程称之为串行化(也叫序列化)

2.有两种情况我们必须把对象序列化:

把一个对象在网络中传输的时候

把对象写入文件或是数据库的时候

3.序列化与反序列化过程

序列化:就是把对象转化为二进制的字符串,使用serialize()函数

反序列化:把对象转化的二进制字符串再转化为对象,使用unserialize()函数

三.PHP反序列化漏洞原理

1.序列化与反序列化本身没有任何问题

2.但是如果反序列化的内容是用户可以控制的

3.且后台不正当的使用了PHP中的魔法函数

4.就会导致安全问题

5.当传给unserialize()的参数可控时,我们可以通过传入一个精心构造的序列化字符串,从而控制对象内部的变量甚至是函数。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部