Spring Boot 接口数据加解密就该这样设计~

作者:微信小助手

发布时间:2022-12-16T17:02:18

今天这篇文章聊一聊接口安全问题,涉及到接口的加密、解密

和产品、前端同学对外需求后,梳理了相关技术方案, 主要的需求点如下:

  1. 尽量少改动,不影响之前的业务逻辑;
  2. 考虑到时间紧迫性,可采用对称性加密方式,服务需要对接安卓、IOS、H5三端,另外考虑到H5端存储密钥安全性相对来说会低一些,故分针对H5和安卓、IOS分配两套密钥;
  3. 要兼容低版本的接口,后面新开发的接口可不用兼容;
  4. 接口有GET和POST两种接口,需要都要进行加解密;

需求解析:

  1. 服务端、客户端和H5统一拦截加解密,网上有成熟方案,也可以按其他服务中实现的加解密流程来搞;
  2. 使用AES放松加密,考虑到H5端存储密钥安全性相对来说会低一些,故分针对H5和安卓、IOS分配两套密钥;
  3. 本次涉及客户端和服务端的整体改造,经讨论,新接口统一加 /secret/ 前缀来区分

按本次需求来简单还原问题,定义两个对象,后面用得着,

用户类:

@Data
public class User {
    private Integer id;
    private String name;
    private UserType userType = UserType.COMMON;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime registerTime;
}

用户类型枚举类: