Session反序列化与php原生类应用
当用户首次访问一个服务器,如果该服务器开启了Session(使用Seesion_start()函数开启),服务器将生成一个唯一PHPSESSID,同时创建一个以sess_PHPSESSID
命名的文件用于存储会话信息。并在HTTP响应中通过 Set-cookie:PHPSESSID
将PHPSESSID发送给用户。当用户再次访问时Session_start()
函数就不会再去分配一个新的PHPSESSID,而是在服务器中去寻找以sess_PHPSESSID
命名的文件,将文件保存的序列化信息进行反序列化并读出。
CommonsCollections5
jdk 在 1.8 之后对 AnnotationInvocationHandler 类进行了修复,而CommonsCollections5利用链则是寻找到了替代AnnotationInvocationHandler 的新的可以利用的类。
Commons-Collections6
Commons-Collections6是在Commons-Collections1的LazyMap链
基础上进行了改进,解决了Commons-Collections1在Java 8u71以后因为sun.reflect.annotation.AnnotationInvocationHandler#readObject
的逻辑发生变化,而无法利用的问题。
Commons-Collections1
Apache Commons Collections
是一个扩展了 Java 标准库里的 Collection 结构的第三方基础库,它提供了很多强有力的数据结构类型并实现了各种集合工具类。作为 Apache 开源项目的重要组件,被广泛运用于各种 Java 应用的开发。
在Commons Collections中实现了一个TransformedMap
类,该类是对 Java 标准数据结构类型Map接口的一个扩展。该类可以在一个Map元素加入到集合内时,自动对该元素进行特定的修饰变化,而具体的变换逻辑则由Transformer
类定义,Transformer
在TransformedMap
实例化时作为参数传入