fastjson2 黑名单研究记录

发布时间 2023-03-26 00:14:44作者: 国产大熊猫~

1)首先参考: https://github.com/LeadroyaL/fastjson-blacklist

在fj1之中黑名单名为 denyHashCodes 在fj2之中也是一样,只不过存储在 ObjectReaderProvider.java 之中

为了方便调试我们可以将 NotSupportAutoTypeErrorTest.java 中的 test2 改为以下代码

@Test
public void test2() {
    Bean bean = new Bean(Arrays.asList(new Int1()));
    String str = JSON.toJSONString(bean, JSONWriter.Feature.WriteClassName);
    Bean bean2 = (Bean)JSON.parseObject(str, Object.class, JSONReader.Feature.SupportAutoType);
    assertThrows(JSONException.class, () -> JSON.parseObject(str, Object.class, JSONReader.Feature.ErrorOnNotSupportAutoType));
}

参考: https://github.com/alibaba/fastjson2/wiki/fastjson2_autotype_cn 

Bean bean2 = (Bean)JSON.parseObject(str, Object.class, JSONReader.Feature.SupportAutoType);

增加一行代码进行反序列化操作

 

2)开始调试

在匹配白名单的地方下断点(fj2先对比白名单后对比黑名单)

然后用调试模式启动test2

成功了,我们就可以调试了