序列化就是把对象转换成字节流,便于保存在内存、文件、数据库中;反序列化即逆过程,由字节流还原成对象。Java中的ObjectOutputStream类的writeObject()方法可以实现序列化,类ObjectInputStream类的readObject()方法用于反序列化。下面是将字符串对象先进行序列化,存储到本地文件,然后再通过反序列化进行恢复
如果Java应用对用户输入,即不可信数据做了反序列化处理,那么攻击者可以通过构造恶意输入,让反序列化产生非预期的对象,非预期的对象在产生过程中就有可能带来任意代码执行
序列化就是把一个对象保存到一个文件或数据库字段中去,反序列化就是在适当的时候把这个文件再转化成原来的对象使用。我想最主要的作用有:
1、在进程下次启动时读取上次保存的对象的信息
2、在不同的AppDomain或进程之间传递数据
3、在分布式应用系统中传递数据
$str = 'a:2:{i:0b:0s:8:"bankinfo"a:1:{i:1a:2{s:6:"bankid"i:1s:7:"cardnum"s:4:"adda"}}}'$res = unserialize($str)
echo $res['bankinfo'][1]['cardnum']
这个数组整个结构是
Array ([0] => false
[bankinfo] => Array (
[1] => Array (
[bankid] => 1
[cardnum] => adda
)
)
)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)