m

mask-cn

GitHub

中文本土场景敏感数据脱敏 PHP 库,内置手机号、身份证、银行卡、复姓姓名、车牌、统一社会信用代码等规则,支持长文本智能识别、数组批量脱敏、自定义策略与 Laravel 集成,开箱即用。

语言:PHP 6Fork 1MIT开发工具
PHPLaravel数据脱敏开源库

项目介绍

一个专门为中文本土场景设计的敏感数据脱敏库。做国内后端系统总有不能明文出现的数据——手机号、身份证、银行卡、车牌、统一社会信用代码,日志、接口返回、导出报表都要打码。mask-cn 把这些本土规则内置成策略:身份证兼容 15/18 位、姓名识别复姓、车牌考虑新能源格式,composer require snowmannunu/mask-cn 即可安装,PHP 7.3+ 至 8.3+ 全覆盖(需要 ext-mbstring)。

基础用法

所有脱敏通过 Mask 类静态方法调用:

use MaskCn\Mask;

Mask::phone('13812345678');           // "138****5678"
Mask::idCard('110101199003078888');   // "110101********8888"
Mask::bankCard('6222021234567890123'); // "6222 *********** 0123"
Mask::name('欧阳娜娜');                // "欧阳*娜" ← 复姓识别
Mask::plate('京A12345');              // "京A***45"
Mask::address('广东省深圳市南山区科技园'); // "广东省深圳市******"

核心特性

  • 本土规则内置:手机号、身份证、银行卡、复姓姓名、车牌、统一社会信用代码(兼容 18 位 USCC、9 位组织机构代码、旧版营业执照)、港澳台证件、护照、中文地址
  • 长文本智能识别(auto 模式):一句话里混着电话、身份证、邮箱也能自动识别脱敏,支持 JSON 字符串只脱敏值,可按类型过滤
  • 数组批量脱敏:Mask::array() 按字段名映射策略,一次处理整个用户数组
  • 自定义策略:实现 StrategyInterface 注册后即可在 Mask::array() 映射中使用
  • 全局配置:Config 类统一设置掩码字符和保留位数,方法级参数可覆盖
  • 日志集成:PSR-3 MaskSensitiveLogger 包装器 + MaskProcessor 静态处理器,业务代码零改动
  • Laravel 零配置:服务提供者自动注册,可用 MaskedField 验证规则约束提交数据

长文本智能识别

$text = '我的电话是 13812345678,身份证是 110101199003078888,邮箱 foo@bar.com';
Mask::auto($text);
// "我的电话是 138****5678,身份证是 110101********8888,邮箱 f**@bar.com"

相关链接

MIT 协议开源,配套 PHPUnit 测试和 PHPStan 静态分析。