位置: 编程技术 - 正文

php中序列化与反序列化详解(php反序列化漏洞原理)

编辑:rootadmin

推荐整理分享php中序列化与反序列化详解(php反序列化漏洞原理),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:php反序列化pop链,php反序列化pop链,php反序列化漏洞原理,php反序列化漏洞原理,php反序列化pop链,php的序列化操作生成的哪种格式,php反序列化pop链,php 反序列化,内容如对您有帮助,希望把文章链接给更多的朋友!

把复杂的数据类型压缩到一个字符串中

serialize() 把变量和它们的值编码成文本形式

unserialize() 恢复原先变量

eg:

php中序列化与反序列化详解(php反序列化漏洞原理)

结果:a:3:{i:0;s:3:"Moe";i:1;s:5:"Larry";i:2;s:5:"Curly";}

Array ( [0] => Moe [1] => Larry [2] => Curly )

当把这些序列化的数据放在URL中在页面之间会传递时,需要对这些数据调用urlencode(),以确保在其中的URL元字符进行处理:

margic_quotes_gpc和magic_quotes_runtime配置项的设置会影响传递到unserialize()中的数据。

如果magic_quotes_gpc项是启用的,那么在URL、POST变量以及cookies中传递的数据在反序列化之前必须用stripslashes()进行处理:

如果magic_quotes_runtime是启用的,那么在向文件中写入序列化的数据之前必须用addslashes()进行处理,而在读取它们之前则必须用stripslashes()进行处理:

在启用了magic_quotes_runtime的情况下,从数据库中读取序列化的数据也必须经过stripslashes()的处理,保存到数据库中的序列化数据必须要经过addslashes()的处理,以便能够适当地存储。

当对一个对象进行反序列化操作时,PHP会自动地调用其__wakeUp()方法。这样就使得对象能够重新建立起序列化时未能保留的各种状态。例如:数据库连接等。

本文链接地址:https://www.jiuchutong.com/biancheng/293835.html 转载请保留说明!

上一篇:PHP最常用的正则表达式(php正则表达式匹配链接)

下一篇:PHP静态成员变量(php中类静态成员描述不正确的是)

免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

鄂ICP备2023003026号

网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

友情链接: 武汉网站建设 电脑维修 湖南楚通运网络