HTML怎么做手机号脱敏_html手机号中间四位脱敏方法【经验分享】

落萱姑娘_6882

落萱姑娘_6882

2026-05-22

1048人浏览

原创

HTML本身不能做手机号脱敏,真正有效的是服务端输出前处理或前端JS渲染时实时替换;需先清洗非数字字符、校验长度,再分段替换,且必须在数据绑定前完成,避免明文暴露。

html怎么做手机号脱敏_html手机号中间四位脱敏方法【经验分享】

HTML 本身不能做手机号脱敏,所有试图在纯 HTML 标签里“加个属性”或“写个注释”就声称脱敏的做法,都是无效的。真正起作用的只有服务端输出前处理,或前端 JS 渲染时实时替换。

为什么直接在 HTML 里写 138****1234 不算脱敏

这种写法只是把脱敏结果硬编码进源码,意味着:原始数据根本没出现过,也谈不上“脱敏”;更关键的是,它无法响应不同权限、不同场景的动态策略(比如客服看前3后4,实习生只能看前3后2)。一旦业务规则变,就得改 HTML 模板,维护成本高,还容易漏改。

常见错误现象包括:

  • 在 Vue/React 模板里写死 {{ user.phone | maskPhone }},但 maskPhone 过滤器没做空值/长度校验,遇到 null 或 "138" 就报错或拼出 138****
  • 用 innerHTML 插入含明文手机号的字符串,再用 querySelectorAll("td.phone") 遍历替换——页面会先闪一下完整号码
  • 正则写成 /^1[3-9]\d{9}$/ 去匹配,但用户输入的是 138-0013-8000 或 +86 13800138000,直接不匹配,脱敏失效

phone.replace(/(\d{3})\d{4}(\d{4})/, "$1****$2") 的坑与修正

这行代码看着简洁,但上线后常出问题。核心问题是:它假设输入一定是 11 位纯数字,且结构规整。现实中远非如此。

安全做法是先清洗、再校验、最后替换:

  • 用 phone.replace(/\D/g, "") 去掉所有非数字字符(空格、横杠、+、括号等)
  • 检查清洗后长度是否为 11,不是就直接返回原值(不强行脱敏)
  • 再用 substr_replace(PHP)或 slice + 字符串拼接(JS)做替换,避免正则捕获失败时返回空或异常
  • 如果要兼容固话(如 010-12345678),得单独判断清洗后长度是否为 10 或 11,分支处理

JS 示例(带防护):

Wechat Article Html
Wechat Article Html

将 Markdown 文章转换为微信公众号兼容的纯 HTML 格式。当用户要求"转成微信格式"、"生成公众号文章 HTML"、"排版到微信草稿箱"、"微信粘贴格式"时触发。输出带内联样式的纯 HTML,微信编辑器可直接渲染,无需额外适配。支持标题、段落、列表、粗体、行内代码、表格、引用块、代码块、配图的完整转换。

下载
function maskPhone(phone) {
  if (!phone || typeof phone !== 'string') return phone;
  const clean = phone.replace(/\D/g, '');
  if (clean.length !== 11) return phone;
  return clean.slice(0, 3) + '****' + clean.slice(7);
}

Vue/React 中该在哪一层做脱敏

必须在数据绑定前完成,不能依赖 DOM 渲染后再操作。否则存在明文暴露窗口期,尤其在 SSR 或快速首屏场景下更明显。

推荐位置:

  • Vue:在 computed 或 setup() 里调用脱敏函数,确保 {{ maskedPhone }} 绑定的是已处理值
  • React:在 useMemo 或组件顶层变量中处理,不要在 return 内联写 phone.replace(...)
  • 服务端模板(如 Twig、Thymeleaf):直接在渲染层调用 mask_phone(phone),最稳妥,无前端风险

绝对避免:

  • 在 mounted / useEffect 里查 DOM 并修改 textContent
  • 把脱敏逻辑写在 v-html 或 dangerouslySetInnerHTML 的内容里
  • 用 CSS text-security: disc 伪装脱敏——审查元素一眼看到明文

真正难的不是写对一行正则,而是让脱敏行为稳定嵌入整个数据流:从接口返回、状态管理、到最终渲染,每个环节都可能绕过或破坏脱敏逻辑。尤其是当同一个字段要在表格、弹窗、导出 Excel、甚至埋点日志里复用时,分散的脱敏调用极易遗漏或不一致。

前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!

相关文章

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

html

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
html版权符号
html版权符号

html版权符号是“©”,可以在html源文件中直接输入或者从word中复制粘贴过来,php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.14

6615

7

html在线编辑器
html在线编辑器

html在线编辑器是用于在线编辑的工具,编辑的内容是基于HTML的文档。它经常被应用于留言板留言、论坛发贴、Blog编写日志或等需要用户输入普通HTML的地方,是Web应用的常用模块之一。php中文网为大家带来了html在线编辑器的相关教程、以及相关文章等内容,供大家免费下载使用。

2023.06.21

3672

4

html网页制作
html网页制作

html网页制作是指使用超文本标记语言来设计和创建网页的过程,html是一种标记语言,它使用标记来描述文档结构和语义,并定义了网页中的各种元素和内容的呈现方式。本专题为大家提供html网页制作的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.31

3350

5

html空格
html空格

html空格是一种用于在网页中添加间隔和对齐文本的特殊字符,被用于在网页中插入额外的空间,以改变元素之间的排列和对齐方式。本专题为大家提供html空格的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.01

3359

5

html是什么
html是什么

HTML是一种标准标记语言,用于创建和呈现网页的结构和内容,是互联网发展的基石,为网页开发提供了丰富的功能和灵活性。本专题为大家提供html相关的各种文章、以及下载和课程。

2023.08.11

5019

6

html字体大小怎么设置
html字体大小怎么设置

在网页设计中,字体大小的选择是至关重要的。合理的字体大小不仅可以提升网页的可读性,还能够影响用户对网页整体布局的感知。php中文网将介绍一些常用的方法和技巧,帮助您在HTML中设置合适的字体大小。

2023.08.11

3321

3

html转txt
html转txt

html转txt的方法有使用文本编辑器、使用在线转换工具和使用Python编程。本专题为大家提供html转txt相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.31

3129

3

html文本框代码怎么写
html文本框代码怎么写

html文本框代码:1、单行文本框【<input type="text" style="height:..;width:..;" />】;2、多行文本框【textarea style=";height:;"></textare】。

2023.09.01

2728

6

HTML嵌入CSS样式的方法
HTML嵌入CSS样式的方法

HTML嵌入CSS样式的方法有内联样式、内部样式表和外部样式表。本专题为大家提供CSS样式相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.20

2828

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
GDB 17.2 官方文档集合
GDB 17.2 官方文档集合

共0课时 | 0人学习

Bootstrap 入门安装配置
Bootstrap 入门安装配置

共0课时 | 0人学习

38+ PhpStorm 提示和技巧
38+ PhpStorm 提示和技巧

共1课时 | 228人学习