跳到主要内容

脱敏相关说明

更新内容

restful.jar 1.49

restful.jar 1.49 版本开始的 需要更新到 1.49.23 版本,或者以上

restful.jar 1.50

restful.jar 1.50 版本开始的 需要更新到 1.51.65 版本,或者以上

业务模块的更新 问开发,一般来说具体写入 f_user_phone ,f_idnumber 的程序需要单独处理,比如营收的建档,需要更新营收的建档程序,具体的更新内容需要问开发。 50+版本默认开启 jwt 校验 如不需要 请配置 config.properties 中的 passUrl/jwtPass 在结尾 加上 -. 即为放行所有

1.50 需要更新其他内容

  1. liuli 兼容包需要更新到 af-liuli_module-v3support 0.0.67

  2. 表达式 expression 版本更新到 expression-1.8.3-rc1

  3. druid 数据库连接池版本更新到 druid-1.2.20,并修改application.xml 数据库配置如下,数据库地址更具实际修改

<bean id="dataSource"
class="com.alibaba.druid.pool.DruidDataSource"
destroy-method="close" init-method="init" lazy-init="true">
<property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
<property name="url" value="jdbc:sqlserver://192.168.50.3:1433;database=AFproduct_V3_Demo;Encrypt=false;TrustServerCertificate=true;" />
<property name="username" value="sa" />
<property name="password" value="class123!@!"/>
<property name="initialSize" value="5" />
<property name="minIdle" value="5" />
<property name="maxActive" value="64" />
<property name="maxWait" value="50000" />
<property name="connectTimeout" value="50000"/>
<property name="socketTimeout" value="50000"/>
<property name="removeAbandoned" value="false"/>
<property name="logAbandoned" value="true"/>
</bean>
  1. 添加 systemConfig.json 文件,与原来的 config.json 同级 如果有了就不用新建了。 systemconfig 内容 👇
{
--加密方式 一般不用管
"dataSecurity": {
"enableDataEncryption": "false",
"aesKey": "3KMKqvgwR8ULbR8Z",
"passUrl": "rs/search"
},
"system": {
"webAppName": "af-revenue", -- 应用名字 如 af-revenue af-address af-safecheck
"tenantName": "Baole", -- 租户名字 必填 如 Baole huayin 参考 t_org 表中 f_dir 字段
"proxyUrl": "http://127.0.0.1:8015", -- 前台入口
"ldapUrl": "http://60.13.220.242:8400/ldap" -- ldap 地址
},
"persistenceLog": {
"isEnabled": false
},
"redis": {
"registerUrl":"127.0.0.1:8080/manage", --redis注册地址 config.json 中的 redis 注册地址
"hostName": "redis-svc.env:6379",--redis地址 config.json 中的 redis 地址
"password": "123456", --redis 密码
"codecType": "String" -- 新版江超加了类型 此处必填String
},
"resources": {
"fileRootPath": "d:/manageRes",
"extraPaths": {
"webmeterImage": "/manageImage"
}
},
"subclass": ["revenue"]
}

配置内容

web.xml 中增加 过滤器

<filter>
<filter-name>Response</filter-name>
<filter-class>com.aote.filter.ResponseFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Response</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

文件位置 👇 alt text 添加位置 👇 alt text

注意这个图上面上面注释的部分 ,如果项目上没有注释请不要注释掉。

增加 Config.perperties 文件

文件内容 👇

passUrl=rs/logic/getVCode-rs/sql/getUserInfo
passurl_array=/rs/logic/getVCode-/rs/logic/getLogin-/rs/search-/rs/file/-/rs/dir/version-/rs/db-/rs/dir-/rs/dir2-/phone/update.apk-/rs/logic/getServiceChanged-/rs/file/savefile-/rs/logic/uploadSave
# 需要脱敏处理开关
ResponseFilterSwitch = true
# 需要处理敏感数据的url
ResponseFilterUrl = rs/sql-rs/logic
# 可以解敏的用户id
CanDecryptUserId = 123-345-678

文件目录 👇 alt text

如果有文件 需要再文件里添加 上 脱敏的主要配置 比如: ResponseFilterSwitch(需要脱敏处理开关)这个为true时 写入数据库时才会加密,为false时不加密 ResponseFilterUrl(需要处理敏感数据的url)这个为需要脱敏的url CanDecryptUserId(可以解敏的用户id)这个为可以解密的用户id

读取数据时如何解密 (和部署无关)

靠上面的 ResponseFilter 来进行解密

写入数据时如何加密 (和部署无关)

参考营收改动

  1. plugin.xml 增加 插件
<plugin alias="DesensitizationTool" class="com.aote.filter.DesensitizationTool"/>
  1. 进入logic后处理数据
  DesensitizationTool.checkPhone(${data.userinfo.f_user_phone}$) :(
data.userinfo.f_user_phone = DesensitizationTool.phoneEncrypt(${data.userinfo.f_user_phone}$)
),(
log.debug($电话号码校验不通过$),
data.userinfo.f_user_phone.indexOf($****$) > -1:(
jsonTools.removeKey(data.userinfo, $f_user_phone$)
),null
),null,
DesensitizationTool.checkID(${data.userinfo.f_idnumber}$) :(
data.userinfo.f_idnumber = DesensitizationTool.idNumberEncrypt(${data.userinfo.f_idnumber}$)
),(
log.debug($电话号码校验不通过$),
data.userinfo.f_idnumber.indexOf($****$) > -1:(
jsonTools.removeKey(data.userinfo, $f_idnumber$)
),null
),null,

首次部署/验证

  1. 更新之后 修改档案或者进行其他档案操作后,手机号码身份证号应该会变成密文
  2. 读取数据时,如果配置了解密人员id,手机号码身份证号应该会变成明文

测试单独功能没问题之后 联系开发人员吧数据库中所有的手机号码和身份证号码都加密。