反序列化

定义
  将对象的状态信息转换为可以存储或传输的形式(字符串)的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化的状态,重新创建该对象。
简单的说,序列化就是把一个对象变成可以传输的字符串,可以以特定的格式在进程之间跨平台、安全的进行通信。

PHP反序列化
   PHP反序列化漏洞也叫PHP对象注入,漏洞形成的根本原因是程序没有对用户输入的反序列化字符串进行检测,导致反序列化过程可以被恶意控制,进而造成代码执行、getshell等一系列不可控的后果。反序列化漏洞并不是PHP特有,也存在于Java、python中,原理基本相通

魔术方法
php的魔术方法在特定情况下会被自动调用

方法调用情况
__construct在创建对象时自动调用
__destruct在销毁对象时自动调用
__call()在对象中调用一个不可访问方法时,__call()会被调用
__callStatic()在静态上下文中调用一个不可访问方法时调用
__get()读取不可访问属性的值时,__get()会被调用
__set()在给不可访问属性赋值时,__set()会被调用
__isset()当对不可访问属性调用 isset() 或 empty() 时,__isset()会被调用
__unset()当不可访问属性调用 unset() 时,__unset()会调用
__sleep()如果存在,该方法会先被调用,然后才执行序列化操作
__wakeupunserialize()时被调用,做对象的初始工作
__toString()用于一个类被当做字符串时应怎样回应
__invoke()当尝试以调用函数的方式调用一个对象时,__invoke()方法会被自动调用
__set_state()自PHP 5.1.0 起当调用var_export() 导出类时,此静态方法会被调用
__clone()当复制完成时,如果定义了__clone()方法,则新创建的对象(复制生成的对象)中的__clone()方法会被调用,可用于修改属性的值(如果有必要的话)
__debugInfo()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值