序列化和反序列化

还记得大一用javafx写学生管理系统的时候,数据存储用的序列化 如今信息安全实训再一次提到序列化,只不过是在php中运用的 所以 我查阅相关资料。遇到了一个博主 写的挺好的 链接放在底部。

java中序列化

1.先看官网定义:

序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。

也就是说序列化后可以节约内存资源 

序列化主要有两个用途

(1)把对象的字节序列永久保存到硬盘上,通常存放在一个文件中(序列化对象)
(2)在网络上传送对象的字节序列(网络传输对象)

PHP序列化

序列化的函数:string serialize ( mixed $value )

漏洞问题:对象注入
当用户的请求在传给反序列化函数unserialize()之前没有被正确的过滤时就会产生漏洞。
因为PHP允许对象序列化,攻击者就可以提交特定的序列化的字符串给一个具有该漏洞的unserialize函数,最终导致一个在该应用范围内的任意PHP对象注入。
对象漏洞出现得满足两个前提:

一、unserialize的参数可控。
二、 代码里有定义一个含有魔术方法的类,并且该方法里出现一些使用类成员变量作为参数的存在安全问题的函数。
例子:

<?php class A{ var $test = "demo"; function __destruct(){ echo $this->test; } } $a = $_GET['test']; $a_unser = unserialize($a); ?>
比如这个列子,直接是用户生成的内容传递给unserialize()函数,那就可以构造这样的语句
?test=O:1:“A”:1:{s:4:“test”;s:5:“lemon”;}
在脚本运行结束后便会调用_destruct函数,同时会覆盖test变量输出lemon。


————————————————
版权声明:本文为CSDN博主「我是李现大王」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_52556798/article/details/123568125

参考大佬链接

 序列化与反序列化漏洞详解_poggioxay的博客-CSDN博客_序列化漏洞

序列化和反序列化_lei_gentle的博客-CSDN博客_序列化和反序列化

面试php反序列化、java反序列化原理和常见函数_我是李现大王的博客-CSDN博客_java php反序列化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值