spring boot项目,数据层spring data jpa
现在想在数据层把个人信息的敏感字段加密?因为项目过大,如何事项在查询语句执行之前增加拦截,将查询参数进行加密,及获取数据后将查询数据进行解密。
建议将敏感字段置空,或者通过不同接口返回,对于数据安全上可以使用oauth、jwt等技术通过token来获取敏感,因为即使你数据进行了加密。前端仍然需要解密,不但浪费性能,还会加大工作量,望采纳!
简单的对方法进行aop方式的处理,还是有其他需要特别注意的地方?
可以了解下 AttributeConverter
看看是否满足需求哈,示例代码见下文,示例为将实体类中定义的 Instant
类型转换为 Date
类型以存入数据库。
(同理的,字符串转字符串也可以定义,此时,dbData
为加密后的数据,实体中属性为未加密数据即可)
定义 Converter
public class InstantDateAttributeConverter implements AttributeConverter<Instant, Date> {
@Override
public Date convertToDatabaseColumn(Instant attribute) {
return Optional.ofNullable(attribute)
.map(Date::from)
.orElse(null);
}
@Override
public Instant convertToEntityAttribute(Date dbData) {
return Optional.ofNullable(dbData)
.map(Date::toInstant)
.orElse(null);
}
}
使用 Converter
(当然要在 JPA 的实体类中使用哈)
@Convert(converter = InstantDateAttributeConverter.class)
private Instant modifiedTime;