什么是序列化?序列化有什么作用? |
您所在的位置:网站首页 › 序列设置是什么 › 什么是序列化?序列化有什么作用? |
反序列化是一系列安全问题的根源:攻击者能够将恶意数据序列化并存储到数据库或内存中,当应用进行反序列化时,应用会执行到恶意代码。 在谷歌内部,这个缺陷被称为“疯狂的小部件 (Mad Gadget)”,外界对它的叫法是 “Java 启示录 (Apocalypse)”。 所以有一系列的规范来最大化避免: 1)对序列化对象执行完整性检查或加密,以防止恶意对象创建或数据篡改;最常见的例子之一就是JWT:JWT由3部分组成:Header,Payload,Verify Signature,最后的签名部分其实就是对数据进行完整性校验的关键部分,用secret对数据部分进行哈希计算,随后检查计算出来的哈希值是否和请求中的JWT签名部分的哈希值相同。若两者一致则认为数据完整性没有被破坏,若两者有差异则说明数据被修改过。 2)在创建对象之前强制执行严格的类型约束; 3)隔离反序列化的代码,使其在非常低的特权环境中运行; 4)记录反序列化的例外情况和失败信息,如:传入的类型不是预期的类型,或者反序列处理引发的例外情况; 5)限制或监视来自于容器或服务器传入和传出的反序列化网络连接; 6)监视反序列化,当用户持续进行反序列化时,对用户进行警告。
目前JAVA常用的序列化有protobuf,json,xml,Serializable,hessian,kryo。 protobuf:谷歌公司出的一款开源项目,转码性能高,支持多语言; JSON:用途最广泛,序列化方式还衍生了阿里的fastjson,美团的MSON,谷歌的GSON等更加优秀的转码工具。 优点:使用方便。 缺点:数据冗长,转码性能一般。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |