详情 |
引入依赖
<dependency>
<groupId>com.jd.security.codesec</groupId>
<artifactId>ajdv</artifactId>
<version>0.1</version>
</dependency>
使用方法
默认情况下,在进行Java反序列化操作时,使用如下代码,就可以防止反序列化安全漏洞:
ObjectInputStream ois = new SafeObjectInputStream(new FileInputStream("/tmp/xxx"));
Object o = ois.readObject();
如果需要定制黑名单可以通过如下两种方式
方法一:自己提供类黑名单,这方式将完全替换程序默认提供的类黑名单
Set<String> classBlackList = new HashSet<String>();
classBlackList.add("com.xxx.xxx.AAA");
classBlackList.add("com.xxx.xxx.BBB");
SafeObjectInputStream ois = new SafeObjectInputStream(new FileInputStream("/tmp/xxx"),classBlackList );
Object o = ois.readObject();
方法二:添加额外的黑名单,这种方式不会替换程序自带的黑名单,而是在原有黑名单基础之上添加额外的黑名单类
SafeObjectInputStream ois = new SafeObjectInputStream(new FileInputStream("/tmp/xxx") );
ois.addBlackList("com.xxx.xxx.AAA");
ois.addBlackList("com.xxx.xxx.BBB");
Object o = ois.readObject();