@Jsonview过滤pojo和jackson安全漏洞

com.fasterxml.jackson.annotation.JsonView
@JsonView可以过滤pojo的属性,使Controller在返回json时候,pojo某些属性不返回,比如User的密码,一般是不返回的,就可以使用这个注解。

利用@Jsonview注解过滤pojo

com.fasterxml.jackson.annotation.JsonView
@JsonView可以过滤pojo的属性,使Controller在返回json时候,pojo某些属性不返回

1.在pojo字段添加@Jsonview

2.添加视图接口


@Getter
@Setter
@ToString
@TableName("project")
public class Project {

	public interface ProjectBaseInfo{}

	@TableId
	@JsonView(ProjectBaseInfo.class)
	private Integer id;

	// 项目编码
	@JsonView(ProjectBaseInfo.class)
	private String projectNumber;

	// 项目名称
	@JsonView(ProjectBaseInfo.class)
	private String projectName;

	// 数量
	@JsonView(ProjectDetailInfo.class)
	private Integer count;
}

3.在Controller中调用

@GetMapping("getProjectList")
@ApiOperation("获取项目列表")
@JsonView(Project.ProjectBaseInfo.class)
public Results<List<Project>> getProjectList() {
    List<Project> list = dtsService.getProjectList(DTS_TYPE);
    return Results.ok(list);
}

关于jackson的安全漏洞

jackson开发方发布了修复公告建议用户更新到2.12.0+ 版本,同时后续将发布的版本也会加入该漏洞的修复措施。

升级jackson,参考

  • 打开pom.xml, 在properties加入jackson.version
<properties>
    <java.version>1.8</java.version>
    <jackson.version>2.12.4</jackson.version>
</properties>
  • 加入依赖
<!-- JSON工具类 -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>${jackson.version}</version>
</dependency>

@Jsonview过滤pojo和jackson安全漏洞

上一篇:给定两个以字符串形式表示的非负整数num1 和 num2 返回值为num1 * num2的乘积(js实现)


下一篇:源码解析.Net中IConfiguration配置的实现