Browse Source

密评优化

dev-V1.10.4
vincent 2 hours ago
parent
commit
f50f7892fc
  1. 67
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/common/commonenum/VerifyResultEnum.java
  2. 67
      zdxt-modules/zdxt-system/src/main/java/org/dromara/system/common/enmu/VerifyResultEnum.java
  3. 4
      zdxt-modules/zdxt-system/src/main/java/org/dromara/system/domain/bean/CryptoIntegrityData.java
  4. 8
      zdxt-modules/zdxt-system/src/main/java/org/dromara/system/service/impl/CryptoSensitiveHsmServiceImpl.java

67
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/common/commonenum/VerifyResultEnum.java

@ -0,0 +1,67 @@
package com.zdxt.enforcementcode.common.commonenum;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
/**
* 数据完整性校验结果枚举 crypto_integrity_data.verify_result
* <p>
* 状态 2 与 4 必须严格区分: 2 为确认篡改(基线锁定拒绝自动覆盖, 须人工核查),
* 4 为程序缺陷或脏数据导致的校验异常(非篡改, 代码修复后允许重建基线)
*
* @author zrb
*/
@Getter
@AllArgsConstructor
public enum VerifyResultEnum {
/**
* 未校验(摘要生成/刷新后的初始态)
*/
UNVERIFIED(0, "未校验"),
/**
* 校验通过(当前值与基线摘要一致)
*/
PASSED(1, "校验通过"),
/**
* 校验失败, 疑似篡改(基线锁定, doSaveIntegrityHash 拒绝自动覆盖)
*/
TAMPERED(2, "校验失败(篡改)"),
/**
* 业务数据不存在或已删除, 跳过校验(不判为篡改)
*/
SKIPPED(3, "数据不存在(跳过)"),
/**
* 校验过程异常(程序缺陷或脏数据, 非篡改, 代码修复后允许重建基线)
*/
ERROR(4, "校验异常(程序缺陷, 非篡改)");
private final Integer code;
private final String info;
/**
* 根据 code 解析枚举
*
* @param code 状态码
* @return 对应枚举; 未匹配返回 null
*/
public static VerifyResultEnum fromCode(Integer code) {
return Arrays.stream(values())
.filter(e -> e.code.equals(code))
.findFirst()
.orElse(null);
}
/**
* 判断是否为给定状态码
*/
public boolean is(Integer code) {
return this.code.equals(code);
}
}

67
zdxt-modules/zdxt-system/src/main/java/org/dromara/system/common/enmu/VerifyResultEnum.java

@ -0,0 +1,67 @@
package org.dromara.system.common.enmu;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
/**
* 数据完整性校验结果枚举 crypto_integrity_data.verify_result
* <p>
* 状态 2 与 4 必须严格区分: 2 为确认篡改(基线锁定拒绝自动覆盖, 须人工核查),
* 4 为程序缺陷或脏数据导致的校验异常(非篡改, 代码修复后允许重建基线)
*
* @author zrb
*/
@Getter
@AllArgsConstructor
public enum VerifyResultEnum {
/**
* 未校验(摘要生成/刷新后的初始态)
*/
UNVERIFIED(0, "未校验"),
/**
* 校验通过(当前值与基线摘要一致)
*/
PASSED(1, "校验通过"),
/**
* 校验失败, 疑似篡改(基线锁定, doSaveIntegrityHash 拒绝自动覆盖)
*/
TAMPERED(2, "校验失败(篡改)"),
/**
* 业务数据不存在或已删除, 跳过校验(不判为篡改)
*/
SKIPPED(3, "数据不存在(跳过)"),
/**
* 校验过程异常(程序缺陷或脏数据, 非篡改, 代码修复后允许重建基线)
*/
ERROR(4, "校验异常(程序缺陷, 非篡改)");
private final Integer code;
private final String info;
/**
* 根据 code 解析枚举
*
* @param code 状态码
* @return 对应枚举; 未匹配返回 null
*/
public static VerifyResultEnum fromCode(Integer code) {
return Arrays.stream(values())
.filter(e -> e.code.equals(code))
.findFirst()
.orElse(null);
}
/**
* 判断是否为给定状态码
*/
public boolean is(Integer code) {
return this.code.equals(code);
}
}

4
zdxt-modules/zdxt-system/src/main/java/org/dromara/system/domain/bean/CryptoIntegrityData.java

@ -64,7 +64,9 @@ public class CryptoIntegrityData {
private Date lastVerifyTime;
/**
* 校验结果:0未校验 1校验通过 2校验失败(篡改)
* 校验结果:0未校验 1校验通过 2校验失败(篡改) 3数据不存在(跳过) 4校验异常(程序缺陷, 非篡改)
*
*
*/
private Integer verifyResult;

8
zdxt-modules/zdxt-system/src/main/java/org/dromara/system/service/impl/CryptoSensitiveHsmServiceImpl.java

@ -12,6 +12,7 @@ import lombok.extern.slf4j.Slf4j;
import org.dromara.common.mybatis.helper.DataPermissionHelper;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.system.common.enmu.VerifyResultEnum;
import org.dromara.system.domain.SysOperLog;
import org.dromara.system.domain.SysUser;
import org.dromara.system.domain.bean.CryptoIntegrityData;
@ -36,7 +37,6 @@ import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
@RequiredArgsConstructor
@Service
@ -385,10 +385,10 @@ public class CryptoSensitiveHsmServiceImpl implements ICryptoSensitiveHsmService
: verifySysOperLogIntegrity(record);
if (r == -1) {
// 修复: 已删除用户(@TableLogic 逻辑删除)不再误判为篡改, 标记跳过态
record.setVerifyResult(3);
record.setVerifyResult(VerifyResultEnum.SKIPPED.getCode());
skipped++;
} else {
record.setVerifyResult(r == 1 ? 1 : 2);
record.setVerifyResult(r == 1 ? VerifyResultEnum.PASSED.getCode() : VerifyResultEnum.TAMPERED.getCode());
if (r == 1) {
passed++;
} else {
@ -405,7 +405,7 @@ public class CryptoSensitiveHsmServiceImpl implements ICryptoSensitiveHsmService
// 避免程序缺陷被误统计为篡改告警噪音; 数据状态未知, 代码修复后允许重建基线
log.error("完整性校验异常, 标记为校验异常(非篡改), tableName={}, bizId={}",
record.getTableName(), record.getBizId(), e);
record.setVerifyResult(4);
record.setVerifyResult(VerifyResultEnum.ERROR.getCode());
record.setLastVerifyTime(new Date());
cryptoIntegrityDataMapper.updateById(record);
errored++;

Loading…
Cancel
Save