在现代的Web应用中,处理用户的敏感信息如信用卡号码、身份证号码、密码等时,确保这些信息不被泄露是至关重要的。敏感信息掩码作为一种常见的安全实践,可以有效防止用户隐私的暴露,特别是在后台管理系统的显示或日志记录中。
通过掩码,开发者能够以较低的复杂度,达到隐藏信息中某些部分的目的,确保即使信息被意外暴露,也不会泄露用户的完整数据。本文将探讨几种常见的掩码处理方法,以及如何灵活地利用正则表达式和第三方库来实现敏感信息掩码。
常见的脱敏和掩码方法
脱敏(或称“掩码”)是通过遮蔽部分敏感数据,使其不再以完整的形式显示。例如,显示信用卡时,通常会只展示前四位和后四位,而中间的数字用“*”替代。常用的脱敏方法包括以下几种:
- 替换:用固定字符(如
*或#)替代敏感信息的一部分。
- 重排:打乱信息顺序,使其不可识别。
- 加密:对信息进行不可逆的加密处理。
- 截断:显示部分信息,隐藏其余部分。
- 掩码:最常用的脱敏方法,通常是将敏感数据的某些部分用特定字符替代。
在实际开发中,掩码处理往往是首选,因为它操作简单,且能确保数据的部分可见性,以满足业务需求。
简单的掩码处理
最常见的掩码形式是通过固定字符替换字符串中的某些部分。以下是一个简单的示例代码,展示如何通过掩码处理隐藏除前后四位以外的字符:
这个简单的掩码函数能够有效地隐藏字符串中间部分的信息,但在面对更复杂的数据类型时,可能需要更灵活的掩码方式。
使用正则表达式进行掩码
正则表达式可以帮助我们更灵活地定义掩码规则。以下示例展示了如何使用正则表达式掩码身份证号码(显示前两位和后两位):
使用第三方库进行掩码
为了更方便地对敏感信息进行掩码处理,可以使用一些现成的工具包或库。这些工具包提供了更高级和灵活的功能,适用于不同类型的数据和复杂的掩码需求。
Apache Commons Lang
Apache Commons Lang是一个非常流行的Java库,提供了许多实用工具类。虽然它没有专门的敏感信息掩码工具,但它提供了一些String操作的工具方法,可以用来实现自定义的掩码逻辑。
使用
Apache Commons Lang 处理字符串操作,能够避免手写复杂的字符串处理逻辑,并且其方法简洁易用,适合各种类型的数据脱敏需求。Hutool
Hutool 是另一个轻量级的Java工具库,内置了多种脱敏工具。
DesensitizedUtil 类可以处理多种常见的敏感信息,如用户名、密码、手机号、身份证号等,能够轻松实现复杂的数据脱敏。
下面是一些脱敏示例:
Hutool 掩码的具体实现是在StrUtil.hide方法中,如果我们想要自定义隐藏符号,或者用不到Hutool工具类其他功能,可以直接把源码拷出来,这也是更加推荐的做法。

当然,在实际项目中,如果需要脱敏返回前端或者打印日志的地方很多,则推荐直接通过注解的方式完成脱敏掩码动作,具体可以参考《Hutool:一行代码搞定数据脱敏 | 京东云技术团队》一文中的实现。
总结
在Web应用的开发中,敏感信息掩码是一项非常重要的安全措施。无论是通过简单的字符串替换、正则表达式还是利用第三方库,掩码处理都能有效地防止敏感信息泄露。
参考资料
- 作者:Yibin
- 链接:https://yibin.dev/article/f1fd1b43-52a2-434f-a5e1-f511a52f682a
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章







