多线程部分的看的我有点不好理解,先看序列化的章节,转换一下内容。
序列化和反序列化简单来说就是把对象变成字节流,再把字节流变成对象。从书中的内容中可以发现字节流的使用并不安全,有着比较大的安全漏洞。而在工作中比较少使用实现Serializable接口,会使用Json工具进行转换,或者还有一个BeanUtils里面的copyProperties()方法。书中给出了三个有关安全的提示。
第一,避免序列化攻击的最佳方式就是永远不要反序列化任何东西。平常业务代码其实用序列化应该主要是为了深拷贝一个新的对象,这种时候用其他的序列化方法或者工具更加方便。
第二,不要反序列化不信任的数据。第二点我想和第三点,白名单优于黑名单结合来讲。序列化有一部分是用在了跨系统之间的数据传输,如果说不同的数据传输过来夹杂一些危险信息和内容,是会引起安全问题。而这种时候就是需要白名单或者黑名单来确保对方的身份信息是可信任的。从使用上来说,白名单是存在可信任的目标,而黑名单是存在已知的不可信任目标,从剩下的群体来说,白名单更容易鉴别对方,而黑名单可能会漏下那些未知的危险。