unserialize()过滤机制

PHP7 增加了可以为 unserialize() 提供过滤的特性,可以防止非法数据进行代码注入,提供了更安全的反序列化数据。

实例


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

<?php 

class MyClass1 {  

   public $obj1prop;    

class MyClass2 { 

   public $obj2prop

$obj1 = new MyClass1(); 

$obj1->obj1prop = 1; 

$obj2 = new MyClass2(); 

$obj2->obj2prop = 2; 

$serializedObj1 = serialize($obj1); 

$serializedObj2 = serialize($obj2); 

// 默认行为是接收所有类 

// 第二个参数可以忽略 

// 如果 allowed_classes 设置为 false, unserialize 会将所有对象转换为 __PHP_Incomplete_Class 对象 

$data = unserialize($serializedObj1 , ["allowed_classes" => true]); 

//转换为所有对象到 __PHP_Incomplete_Class 对象,除了 MyClass1 和 MyClass2 

$data2 = unserialize($serializedObj2 , ["allowed_classes" => ["MyClass1", "MyClass2"]]); 

print($data->obj1prop); 

print(PHP_EOL); 

print($data2->obj2prop); 

?>

以上程序执行输出结果为:
1
2

时间: 2024-10-25 03:11:37

unserialize()过滤机制的相关文章

深入了解SQL注入绕过waf和过滤机制

知己知彼百战不殆 --孙子兵法 [目录] 0x00 前言 0x01 WAF的常见特征 0x02 绕过WAF的方法 0x03 SQLi Filter的实现及Evasion 0x04 延伸及测试向量示例 0x05 本文小结 0x06 参考资料 0x00 前言 笔者前几天在做测试时输入攻击向量后页面发生了重定向甚至异常输入也是重定向怀疑其中有WAF在作怪.之前对WAF接触比较少纯粹是新手趁此科普了一下并查阅了一些绕过WAF的方法.所找到的资料中主要分为两类SQL注入和XSS绕过笔者SQL注入同样是新手

【转】深入理解SQL注入绕过WAF和过滤机制

原文 http://www.cnblogs.com/r00tgrok/p/SQL_Injection_Bypassing_WAF_And_Evasion_Of_Filter.html [目录] 0x0 前言 0x1 WAF的常见特征 0x2 绕过WAF的方法 0x3 SQLi Filter的实现及Evasion 0x4 延伸及测试向量示例 0x5 本文小结 0x6 参考资料 0x0 前言 促使本文产生最初的动机是前些天在做测试时一些攻击向量被WAF挡掉了,而且遇到异常输入直接发生重定向.之前对W

深入理解SQL注入绕过WAF与过滤机制

知己知彼,百战不殆 --孙子兵法 [目录] 0x0 前言 0x1 WAF的常见特征 0x2 绕过WAF的方法 0x3 SQLi Filter的实现及Evasion 0x4 延伸及测试向量示例 0x5 本文小结 0x6 参考资料 0x0 前言 促使本文产生最初的动机是前些天在做测试时一些攻击向量被WAF挡掉了,而且遇到异常输入直接发生重定向.之前对WAF并不太了解,因此趁此机会科普一下并查阅了一些绕过WAF的方法.网上关于绕过WAF有诸多文章,但是观察之后会发现大体上绕过WAF的方法就那八.九种,

深入了解SQL注入绕过waf和过滤机制(转)

知己知彼百战不殆 --孙子兵法 [目录] 0x00 前言 0x01 WAF的常见特征 0x02 绕过WAF的方法 0x03 SQLi Filter的实现及Evasion 0x04 延伸及测试向量示例 0x05 本文小结 0x06 参考资料 0x00 前言 笔者前几天在做测试时输入攻击向量后页面发生了重定向甚至异常输入也是重定向怀疑其中有WAF在作怪.之前对WAF接触比较少纯粹是新手趁此科普了一下并查阅了一些绕过WAF的方法.所找到的资料中主要分为两类SQL注入和XSS绕过笔者SQL注入同样是新手

ASP.NET MVC学习---(九)权限过滤机制(完结篇)

相信对权限过滤大家伙都不陌生 用户要访问一个页面时 先对其权限进行判断并进行相应的处理动作 在webform中 最直接也是最原始的办法就是 在page_load事件中所有代码之前 先执行一个权限判断的方法 至于其专业的权限机制这里不做讨论 想要了解的同学可以自行google之 或者点击进入: webform专业的权限验证机制 那么mvc中是如何实现权限验证的? 据我们所知 mvc中是根据路由配置来请求控制器类中的一个方法 并没有webform中的page_load方法 难道我们要在每个actio

Android Activity intent-flilter过滤机制

在Android中一个应用(APP1)如果要想调用另一应用的(APP2)的某一个Activity(Activity2),就需要在给Intent设置的参数能够通过Activiy2 在清单文件中声明的<intent-filter>属性验证,才能成功调用到Activity.<intent-filter> 标签中可以使用的验证有:Action验证.Category验证.Data验证,其中Action验证是必须声明的. Action 验证: 一个Activity可以声明多个Action,在验

iOS 建立项目过滤机制 —— 给工程添加忽略文件.gitignore

目前iOS 项目 主要忽略 临时文件.配置文件.或者生成文件等,在不同开发端这些文件会大有不同,如果 git add .把这些文件都push到远程, 就会造成不同开发端频繁改动和提交的问题. 步骤: 1 .  在工程目录下 2 . touch .gitignore   //在目录下生成.gitignore  文件 3 . open .gitignore   //打开.gitignore (txt)文件 4 . 写入忽略目录 4.1 这里iOS 项目,使用CocosPods 框架管理工具会生成Po

【php】 自带的过滤机制

<?php print_r(filter_list()); ?> 输出类似: Array ( [0] => int [1] => boolean [2] => float [3] => validate_regexp [4] => validate_url [5] => validate_email [6] => validate_ip [7] => string [8] => stripped [9] => encoded [10]

ztree复选框,过滤节点的机制

//过滤节点的机制 直接return node表示不做任何过滤 //return node.checked==true;表达选择框的节点 function filter(node) {return node;} ///动态设置zTree的所有节点有checkboxfunction DynamicUpdateNodeCheck() { var zTree = $.fn.zTree.getZTreeObj("treeDemo"); //根据过滤机制获得zTree的所有节点