博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
手机号码和邮箱等联系地址,为什么不明文显示?
阅读量:4957 次
发布时间:2019-06-12

本文共 1691 字,大约阅读时间需要 5 分钟。

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

一、需求整理

其实就是当为手机号:则显示前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; }
邮箱地址混淆:

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

二、为什么要密文显示

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

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

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

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

三、个人总结

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

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

转载于:https://www.cnblogs.com/hhx626/p/8320390.html

你可能感兴趣的文章
2124: 等差子序列 - BZOJ
查看>>
字符串匹配算法综述
查看>>
Linux centosVMware shell 管道符和作业控制、shell变量、环境变量配置文件
查看>>
【设计模式】工厂模式
查看>>
两个表格中数据不用是一一对应关系--来筛选不同数据,或者相同数据
查看>>
客户数据库出现大量cache buffer chains latch
查看>>
機械の総合病院 [MISSION LEVEL: C]
查看>>
实战练习细节(分行/拼接字符串/字符串转int/weak和copy)
查看>>
Strict Standards: Only variables should be passed by reference
查看>>
hiho_offer收割18_题解报告_差第四题
查看>>
AngularJs表单验证
查看>>
静态方法是否属于线程安全
查看>>
fegin 调用源码分析
查看>>
Linux的基本命令
查看>>
02号团队-团队任务3:每日立会(2018-12-05)
查看>>
SQLite移植手记1
查看>>
C# windows程序应用与JavaScript 程序交互实现例子
查看>>
HashMap详解
查看>>
js05-DOM对象二
查看>>
mariadb BINLOG_FORMAT = STATEMENT 异常
查看>>