zoukankan      html  css  js  c++  java
  • XStream组件预警以及修复指引

    xstream介绍

    官网地址:https://x-stream.github.io/
    基本介绍:对XML对象进行序列化和反序列化的库
    漏洞预警:存在远程代码执行漏洞,可造成服务器被入侵和业务数据被窃取,该漏洞风险等级为【严重】
    影响版本: 1.4.17 以下版本

    修复方案

    升级

    升级到最新版本1.4.17。
    https://x-stream.github.io/download.html

    删除jar包

    如果业务不需要使用XStream库文件,直接删除即可

    限制反序列化的类

    需要修改源码,XStream官方提供了安全api让开发者根据项目的需求去做限制。
    demo:

     1 import com.thoughtworks.xstream.XStream;
     2 import com.thoughtworks.xstream.security.NoTypePermission;
     3 import com.thoughtworks.xstream.security.NullPermission;
     4 import com.thoughtworks.xstream.security.PrimitiveTypePermission;
     5 
     6 import java.io.File;
     7 import java.io.FileOutputStream;
     8 
     9 public class Test {
    10 
    11 
    12     public static void main(String[] args) throws Exception {
    13 
    14         XStream xstream = new XStream();
    15         xstream.toXML(new People("test",11),new FileOutputStream(new File("/tmp/people.xml")));
    16 
    17         // 不允许白名单
    18         xstream.addPermission(NoTypePermission.NONE);
    19         // 允许基础类
    20         xstream.addPermission(NullPermission.NULL);
    21         xstream.addPermission(PrimitiveTypePermission.PRIMITIVES);
    22         // 允许业务类
    23         xstream.allowTypeHierarchy(People.class);
    24         People people = (People) xstream.fromXML(new File("/tmp/people.xml"));
    25         System.out.println(people.name); //打印 test
    26 
    27     }
    28 }
  • 相关阅读:
    C1FlexGrid双grid滚动条联动
    linux实用命令
    大数据学习1(linux环境搭建)
    一个数据开发工程师要知道的名词
    oracle快速向表插入大量数据
    读书笔记--(索引的扫描方式)
    SQL优化策略(数据仓库)
    oracle大表删除数据方案
    加密与解密
    Spring笔记之IOC
  • 原文地址:https://www.cnblogs.com/handt/p/14780473.html
Copyright © 2011-2022 走看看