你好,我是何为舟。
我们都知道,Java 是一种高层级的语言。在 Java 中,你不需要直接操控内存,大部分的服务和组件都已经有了成熟的封装。除此之外,Java 是一种先编译再执行的语言,无法像 JavaScript 那样随时插入一段代码。因此,很多人会认为,Java 是一个安全的语言。如果使用 Java 开发服务,我们只需要考虑逻辑层的安全问题即可。但是,Java 真的这么安全吗?
2015 年,Java 曾被曝出一个严重的漏洞,很多经典的商业框架都因此受到影响,其中最知名的是WebLogic。据统计,在网络中公开的 WebLogic 服务有 3 万多个。其中,中国就有 1 万多个外网可访问的 WebLogic 服务。因此,WebLogic 的反序列化漏洞意味着,国内有 1 万多台服务器可能会被黑客攻陷,其影响的用户数量更是不可估量的。 你可能要说了,我实际工作中并没有遇到过反序列化漏洞啊。但是,你一定使用过一些序列化和反序列化的工具,比如 Fastjson 和 Jackson 等。如果你关注这些工具的版本更新,就会发现,这些版本更新中包含很多修复反序列化漏洞的改动。而了解反序列化漏洞,可以让你理解,Java 作为一种先打包后执行的语言,是如何被插入额外逻辑的;也能够让你对 Java 这门语言的安全性,有一个更全面的认知。