Skip to content
bitzorcas
中EN

Reference

数据脱敏与隐私保护:IDataMasker 与安全合规

掌握 BitzOrcas.Modern 企业级数据脱敏体系,深入手机号、身份证、邮箱与银行卡掩码算法、[Masked] 契约特性与审计日志自动防泄密。

Last updated

在面向企业级客户(尤其是金融、医疗与大型外企)的软件交付中,敏感个人信息(PII - Personally Identifiable Information)的保护是红线中的红线:

  • 日志明文打印手机号或身份证:开发人员在调试时随手 logger.LogInformation("用户 {Phone}", phone),导致敏感数据进入集中日志服务器,严重违反 GDPR 与网络安全合规;
  • 前端表格明文返回银行卡号:非核心操作员也能直接看到客户完整的银行卡号,存在极大的内部盗刷与信息倒卖风险。

BitzOrcas.Modern 内置了高性能的 IDataMasker 引擎与 [Masked] 契约注解:在日志序列化、前端 JSON 响应与审计落盘时自动执行毫秒级动态掩码。

数据脱敏流转与合规防线全景

1. 领域聚合根 (包含完整真实数据)

2. 响应 DTO / 审计记录

3. IDataMasker 规则引擎 (手机: 138****0000 / 邮箱: a***b@corp.com)

4. 结构化日志与审计持久化 (密态落盘)

5. HTTP 响应 JSON (前端安全脱敏展示)


第一步:在 DTO 与实体上标注脱敏特性

使用 [Masked] 声明特定字段的脱敏规则:

UserProfileDto.cs: 声明敏感字段脱敏
using BitzOrcas.Application.Abstractions.Security;
namespace BitzOrcas.Identity.Contracts.Dtos;
public sealed record UserProfileDto
{
public string UserId { get; init; } = string.Empty;
public string FullName { get; init; } = string.Empty;
// 手机号掩码:保留前3后4,中间4位替换为 **** (例如 138****5678)
[Masked(MaskType.PhoneNumber)]
public string PhoneNumber { get; init; } = string.Empty;
// 邮箱掩码:保留首字母与域名后缀 (例如 a***z@corp.com)
[Masked(MaskType.Email)]
public string Email { get; init; } = string.Empty;
}

第二步:在日志与审计中调用 IDataMasker

AuditLoggingExtensions.cs: 日志安全脱敏
using BitzOrcas.Application.Abstractions.Security;
public static class AuditLoggingExtensions
{
public static string ToSafeLogString(this string rawPhone, IDataMasker masker)
{
// 1. 纯内存掩码计算,零临时字符串堆分配
var masked = masker.MaskPhoneNumber(rawPhone);
// 2. 返回掩码字符串输出至集中日志
return masked;
}
}

总结

BitzOrcas 数据脱敏体系筑牢企业隐私安全防线:

  • 声明式注解:一键标注字段脱敏类型;
  • 全链路密态:日志、审计与对外接口零明文泄露;
  • 合规即插即用:轻松满足金融级别与 GDPR 安全审计要求。

100%

滚轮或按钮缩放 · 放大后拖动画面 · 双击切换 100% / 200%