今天给大伙儿推荐一个开源项目 —— 推荐一个开箱即用的中文数据脱敏库 mask-cn。mask-cn 是一个面向中文本土场景的敏感数据脱敏库,口号是"开箱即用,无需配置"。它专门针对国内常见的隐私字段做处理 想深入了解的同学,建议收藏这篇。
项目地址:
https://github.com/SnowmanNunu/mask-cn
01 PART 项目是什么 项目是什么 mask-cn 是一个面向中文本土场景的敏感数据脱敏库,口号是"开箱即用,无需配置"。它专门针对国内常见的隐私字段做处理,比如手机号、身份证、银行卡、中文姓名(含复姓)、车牌等,一行静态调用就能把敏感信息打码,非常适合在日志、接口返回、导出文件里保护用户隐私。 仓库地址:https://github.com/SnowmanNunu/mask-cn Composer 包名:snowmannunu/mask-cn 02 PART 项目结构 STRUCTURE · 目录布局 下面用一张目录树,帮你快速摸清这个项目的代码组织方式: 03 PART 核心功能 核心功能 内置的脱敏类型非常贴合国内业务,基本覆盖日常能遇到的敏感字段: •手机号、身份证、银行卡、邮箱 •中文姓名,且能识别复姓(如"欧阳娜娜" → "欧阳*娜") •中国车牌(含新能源) •统一社会信用代码、组织机构代码、旧版营业执照 •港澳台证件:港澳回乡证/居住证、台湾身份证/居住证、护照 •中文地址脱敏(到省级或市级) 最实用的两个能力:数组批量脱敏(一次性对一整条用户数据打码)和 auto 模式(在一段长文本或 JSON 里自动识别并脱敏手机号、身份证等,不用你手动指定字段)。此外还提供全局配置(统一设置掩码字符)、PSR-3 Logger 集成(日志落盘前自动脱敏),以及自定义脱敏规则注册。 04 PART 技术栈 TECH STACK · 技术选型 •语言:PHP 7.3+ / 8.0+ / 8.1+ / 8.2+ / 8.3+ •依赖扩展:ext-mbstring •设计规范:实现 StrategyInterface,遵循 PSR-3 日志接口 •Laravel 集成:服务提供者通过 extra.laravel.providers 自动注册,并提供 Facade 与验证规则 05 PART 架构设计 架构设计 整体采用策略模式(Strategy),每个脱敏类型对应一个策略类并统一实现 StrategyInterface;通过 Mask 门面静态分发调用,自定义规则只需实现接口后用 Mask::register() 注册即可,扩展成本很低。auto 模式则在内置一组识别策略的基础上做文本扫描,按类型匹配后调用对应策略脱敏。 06 PART 快速开始 QUICK START · 快速上手 安装很简单,一个命令搞定: 用法直观得不像话,调用即脱敏,看前后对比最直观: 在 Laravel 里直接用 Facade 即可,无需任何额外配置: 07 PART 适用场景 适用场景 •用户列表、订单详情等接口返回前对敏感字段打码 •业务日志、报错信息里自动脱敏手机号/身份证,避免隐私泄漏 •数据导出、运营报表中对客户信息做掩码处理 •长文本、JSON 报文里批量扫描并脱敏(auto 模式) •需要自定义脱敏规则或接入 Laravel 验证规则的团队



评论