手機號碼和郵箱等聯繫地址,爲什麼不明文顯示?

前言:其實在應用各種產品的時候,也有發現過有些手機號碼和郵箱地址等,都會有一部分是密文顯示。 嗯,其實最明顯的就是銀行卡了,基本上就沒有全部明文顯示的。 這兩天在做一個需求的時候,剛好也有這樣的要求。 之前沒有想過爲什麼,這次簡單想了想,記錄一下。 

一、需求整理

其實就是當爲手機號:則顯示前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<len;i++){
                innerText+="*";
            }
            result=strPrefix+innerText+"@"+str[1];
        }
        return result;
    }

事實上,我一開始這樣寫完後,在頁面上的顯示,完全達到了需求所說的密文顯示。 剛開始,我也就是這麼過去了!

二、爲什麼要密文顯示

後來在做另一個需求的時候,在查看HTML內容的時候,發現了一個大bug,因爲顯示雖然是密文顯示,但由於需要默認驗證手機驗證碼或者郵箱驗證碼,所以在頁面的某一個地方,用hidden類型,明文顯示了一個手機號、郵箱地址。 那時候我就很懵逼了,我靠靠,這是什麼鬼,藏毛線啊,費半天勁,就跟走個過場騙鬼一樣。

然後,我就在想,要求密文顯示的用意,到底是什麼?作爲用戶本人來說,明文、密文其實區別不大,那麼爲什麼要密文呢?我想到的是: 防止這種關鍵信息,被非本人的用戶獲取到!  基於這一點:1,對於普通的用戶來說,我之前做的那一步就夠了,密文掩蓋,根本看不出完整的數據;2,但對於稍微懂點的人,還有那些爬手來說,這就是一場掩耳盜鈴的鬧劇。 基於此:我做了以下更改:

以密文顯示數據,並且去除頁面的手機號、郵箱地址信息,在操作時,直接以後臺緩存的用戶數據做處理。   PS:目前也就做到這樣了,呃,呵呵噠!

但是,查了以下網上對於混淆這種關鍵信息的方法有很多:A:做成圖片顯示;B:將可能會用到的正則匹配關鍵字做更改,比如說:將@ 配置爲一個漢字或者其他;C......

三、個人總結

總結這篇博客,主要不是想說應該怎麼去混淆這個數據以及它究竟有多少種方式去做到。 我個人來說,主要是想記錄一下自己的成長和思考,爲什麼呢? 之前有一個人跟我說過:不要以爲那些找錘子的人,真的是想釘一顆釘子,也許他只是想找個地方放下他的物品而已!

結合到這個簡單的例子,我覺得雖然我後來把頁面上隱藏的手機號和郵箱地址幹掉了是件很小的事兒,但是:我思考了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章