国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

記錄一次敏感信息脫敏的過程

duan199226 / 2766人閱讀

摘要:背景在公司入職,老大讓我去做數據脫敏,通過調用運維組的數據脫敏接口,保證用戶的敏感的信息不落地。公司項目主要使用和版本。

背景:

在A公司入職,老大讓我去做數據脫敏,通過調用運維組的數據脫敏接口,保證用戶的敏感的信息不落地。公司項目主要使用laravel5.1 和 YII1.1 版本。

具體方案:

敏感信息字段的調用存在與代碼中的各個角落,如果手動對每一個地方的代碼都去擼一邊,所需要耗費的時間是非常巨大的,為了減少工作量,我們決定對model下手,考慮到并不是所有的model都存在脫敏信息,多帶帶定義一個trait來處理存在敏感信息似乎是一個相對比較穩妥的方式。

我們對于脫敏的主要思想是對__get()和__set()兩個魔術方法的改造,希望在最大程度的減少對使用類似User::model()->username的影響,以Yii1.1框架為例,還要改造findByAttributes()等方法避免大量findByXXX()方法的失效

public function __get($name)
{
    //getPlainKeys() 定義了model當中的需要的脫敏信息字段
    if(in_array($name, $this->getPlainKeys())) {
        $enc_name = Mask::getMaskName($name);//encrypt_username
        if(empty($this->$enc_name)) {
            return parent::($name); //兼容代碼,用戶數據未更新時調用
        }
        $plain_value = Mask::encrypt(Mask::getMaskType($name), $this->$name);//返回明文
        return $plain_value;
    }else {
        return parent::($name);//不要使用$this->$name 防止多次調用__get()
    }
}

重寫完__get()的方法后,在定義一個getPlain()的方法,傳入返回明文的字段,
通過User::model()->getPlain(["username"])->username的方法返回需要的明文就好了,在這之前,需要在需要脫敏的model里面加好訂好的脫敏信息的字段$mask_key["username","mobile"]

   /**
    * 往數組里塞值
    **/
    public function getPlain($keys)
    {
        foreach($keys as $key){
            if(in_array($key, $this->getMaskName())) {//比較mask_key
                array_merge($this->getPlainKeys(), $keys);         }
        }
        return $this;  
    }

當然了,如果直接通過User::model()->username的地方很多,又需要明文的地方很多,就在model里面直接添加一個$plain_keys的字段去默認返回明文就好了,同時去新增一個能夠將$plain_keys里面的值移除的方法就好了,例如User::model()->removePlainKeys("username")->username返回打碼明文就好了.

public function __set($name, $value)
{
    if(in_array($name, $this->getMaskKeys())){
        ... //產生字段名稱encrypt_username, plain_username
        if(empty($value)) { //防止某些情況下可能發生的將敏感信息寫回空值的情況,enccrypt_username 存在將回返回舊的歷史數據
            $this->setAttributes($name, "");
            $this->setAttributes($encrypt_username, "");
            $this->setAttributes($plain_username, "");
        }
            $data = Mask::doencrypt(Mask::getMaskType($name),$value)
            $this->setAttributes($name, $data["plain_text"]);
            $this->setAttributes($encrypt_username, $data["hash"]);
            $this->setAttributes($plain_username, $value;
    }else {
        reutrn parent::__set($name, $vk)
    }
}

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/28220.html

相關文章

  • 余額寶11.11:基于日志數據分析高效運維

    摘要:接下來我們以余額寶為例,重點剖析天弘基金在日志數據分析領域是如何突破的此前,天弘基金一直使用開源的日志方案,研發和運維人員通過對日志數據進行處理,使用日志文件進行查詢檢索。 雙十一剛剛結束,其實最緊張的不是商鋪理貨,也不是網友緊盯大促商品準備秒殺,而是網購幕后的運維人員,他們最擔心:什么網絡中斷、應用卡頓、響應速度慢,服務器宕機……雙十一作為電商 IT 部門的頭等大事,大促前,運維人員就需要...

    wenshi11019 評論0 收藏0
  • 深入解讀:獲Forrester大數據能力高評價阿里云DataWorks思路與能力

    摘要:阿里云成為唯一入選的中國產品。在阿里云的眾多產品中,和共同構成了服務能力的核心。作為大數據能力賦能的重要手段,出現在了等阿里云專有云解決方案中。利用云計算技術,互聯網公司得以快速的將自身的大數據處理能力對外賦能。 1.前言 本文基于Now Tech: Cloud Data Warehouse, Q1 2018 (Published: by Noel Yuhanna, March 13,...

    ashe 評論0 收藏0
  • 深入解讀:獲Forrester大數據能力高評價阿里云DataWorks思路與能力

    摘要:阿里云成為唯一入選的中國產品。在阿里云的眾多產品中,和共同構成了服務能力的核心。作為大數據能力賦能的重要手段,出現在了等阿里云專有云解決方案中。利用云計算技術,互聯網公司得以快速的將自身的大數據處理能力對外賦能。 1.前言 本文基于Now Tech: Cloud Data Warehouse, Q1 2018 (Published: by Noel Yuhanna, March 13,...

    caoym 評論0 收藏0
  • 深入解讀:獲Forrester大數據能力高評價阿里云DataWorks思路與能力

    摘要:阿里云成為唯一入選的中國產品。在阿里云的眾多產品中,和共同構成了服務能力的核心。作為大數據能力賦能的重要手段,出現在了等阿里云專有云解決方案中。利用云計算技術,互聯網公司得以快速的將自身的大數據處理能力對外賦能。 摘要: Forrester發布了Now Tech: Cloud Data Warehouse Q1 2018報告,報告對云化數據倉庫(Cloud Data Warehouse...

    pinecone 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<