手机号码和邮箱等联系地址,为什么不明文显示?

2024-08-25 21:38

本文主要是介绍手机号码和邮箱等联系地址,为什么不明文显示?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:其实在应用各种产品的时候,也有发现过有些手机号码和邮箱地址等,都会有一部分是密文显示。 嗯,其实最明显的就是银行卡了,基本上就没有全部明文显示的。 这两天在做一个需求的时候,刚好也有这样的要求。 之前没有想过为什么,这次简单想了想,记录一下。 

一、需求整理

其实就是当为手机号:则显示前3位和后3位,其余的以*补齐; 而当是邮箱地址时,显示第一个字符以及@和之后的字符,其余的以*补齐。 示例:151*****507;h***********@163.com;

我的处理过程:那天很匆忙,直接先以结果为导向,so,有待改善的代码如下:

手机号混淆:

 

    protected String getSafeMobileString(String mobile) {String result = "";int mobileLength = 11;if (!Strings.isNullOrEmpty(mobile) && mobile.length() == mobileLength) {result = mobile.replaceAll("(\\d{3})\\d{5}(\\d{3})", "$1*****$2");}return result;}String result = "";int mobileLength = 11;if (!Strings.isNullOrEmpty(mobile) && mobile.length() == mobileLength) {result = mobile.replaceAll("(\\d{3})\\d{5}(\\d{3})", "$1*****$2");}return result;}


邮箱地址混淆:

 

 

    protected String getEmailString(String email){String result="";if (!Strings.isNullOrEmpty(email)) {String[] str=email.split("@");String strPrefix=str[0].substring(0,1);int len=str[0].length()-1;String innerText="";for (int i=0;i<len;i++){innerText+="*";}result=strPrefix+innerText+"@"+str[1];}return result;}String result="";if (!Strings.isNullOrEmpty(email)) {String[] str=email.split("@");String strPrefix=str[0].substring(0,1);int len=str[0].length()-1;String innerText="";for (int i=0;i<len;i++){innerText+="*";}result=strPrefix+innerText+"@"+str[1];}return result;}


事实上,我一开始这样写完后,在页面上的显示,完全达到了需求所说的密文显示。 刚开始,我也就是这么过去了!

 

二、为什么要密文显示

后来在做另一个需求的时候,在查看HTML内容的时候,发现了一个大bug,因为显示虽然是密文显示,但由于需要默认验证手机验证码或者邮箱验证码,所以在页面的某一个地方,用hidden类型,明文显示了一个手机号、邮箱地址。 那时候我就很懵逼了,我靠靠,这是什么鬼,藏毛线啊,费半天劲,就跟走个过场骗鬼一样。

然后,我就在想,要求密文显示的用意,到底是什么?作为用户本人来说,明文、密文其实区别不大,那么为什么要密文呢?我想到的是: 防止这种关键信息,被非本人的用户获取到!  基于这一点:1,对于普通的用户来说,我之前做的那一步就够了,密文掩盖,根本看不出完整的数据;2,但对于稍微懂点的人,还有那些爬手来说,这就是一场掩耳盗铃的闹剧。 基于此:我做了以下更改:

以密文显示数据,并且去除页面的手机号、邮箱地址信息,在操作时,直接以后台缓存的用户数据做处理。   PS:目前也就做到这样了,呃,呵呵哒!

但是,查了以下网上对于混淆这种关键信息的方法有很多:A:做成图片显示;B:将可能会用到的正则匹配关键字做更改,比如说:将@ 配置为一个汉字或者其他;C......

三、个人总结

总结这篇博客,主要不是想说应该怎么去混淆这个数据以及它究竟有多少种方式去做到。 我个人来说,主要是想记录一下自己的成长和思考,为什么呢? 之前有一个人跟我说过:不要以为那些找锤子的人,真的是想钉一颗钉子,也许他只是想找个地方放下他的物品而已!

结合到这个简单的例子,我觉得虽然我后来把页面上隐藏的手机号和邮箱地址干掉了是件很小的事儿,但是:我思考了。

 

这篇关于手机号码和邮箱等联系地址,为什么不明文显示?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1106725

相关文章

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

C# dateTimePicker 显示年月日,时分秒

dateTimePicker默认只显示日期,如果需要显示年月日,时分秒,只需要以下两步: 1.dateTimePicker1.Format = DateTimePickerFormat.Time 2.dateTimePicker1.CustomFormat = yyyy-MM-dd HH:mm:ss Tips:  a. dateTimePicker1.ShowUpDown = t

小程序button控件上下边框的显示和隐藏

问题 想使用button自带的loading图标功能,但又不需要button显示边框线 button控件有一条淡灰色的边框,在控件上了样式 border:none; 无法让button边框隐藏 代码如下: <button class="btn">.btn{border:none; /*一般使用这个就是可以去掉边框了*/} 解决方案 发现button控件有一个伪元素(::after

MFC中Spin Control控件使用,同时数据在Edit Control中显示

实现mfc spin control 上下滚动,只需捕捉spin control 的 UDN_DELTAPOD 消息,如下:  OnDeltaposSpin1(NMHDR *pNMHDR, LRESULT *pResult) {  LPNMUPDOWN pNMUpDown = reinterpret_cast(pNMHDR);  // TODO: 在此添加控件通知处理程序代码    if

微信小程序uniappvue3版本-控制tabbar某一个的显示与隐藏

1. 首先在pages.json中配置tabbar信息 2. 在代码根目录下添加 tabBar 代码文件 直接把微信小程序文档里面的四个文件复制到自己项目中就可以了   3. 根据自己的需求更改index.js文件 首先我这里需要判断什么时候隐藏某一个元素,需要引入接口 然后在切换tabbar时,改变tabbar当前点击的元素 import getList from '../

gazebo 已加载模型但无法显示

目录 写在前面的话问题一:robot_state_publisher 发布机器人信息失败报错一 Error: Error document empty.报错二 .xcaro 文件中有多行注释成功启动 问题二:通过 ros2 启动 gazebo 失败成功启动 问题三:gazebo 崩溃和无法显示模型问题四: 缺少 robot_description 等话题正确的输出 写在前面的话

JSP 简单表单显示例子

<html><!--http://localhost:8080/test_jsp/input.html --><head><meta http-equiv="Content-Type" content="text/HTML; charset=utf-8"><title>input页面</title></head><body><form action="input.jsp" method