成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

優(yōu)雅的 ID 混淆擴(kuò)展包 Laravel Hashid

Cheriselalala / 2062人閱讀

摘要:整合了等高性能編碼算法,并提供了統(tǒng)一的優(yōu)雅的簡(jiǎn)單易用的調(diào)用接口,將敏感數(shù)據(jù)混淆編碼成可還原的非連續(xù)的安全的標(biāo)識(shí)符。重構(gòu)現(xiàn)有的發(fā)碼生成機(jī)制使用數(shù)據(jù)庫自帶的索引主鍵,但是對(duì)外進(jìn)行混淆。對(duì)加密串進(jìn)一步混淆,并生成安全的字符串。

Laravel Hashid 整合了 [Base62], [Base64], [Hashids], [Optimus] 等高性能編碼算法,并提供了統(tǒng)一的、優(yōu)雅的、簡(jiǎn)單易用的調(diào)用接口,將「敏感數(shù)據(jù)」混淆(編碼)成可還原的、非連續(xù)的、URL 安全的標(biāo)識(shí)符 (ID) 。

應(yīng)用場(chǎng)景示例

不希望對(duì)外暴露有規(guī)則的數(shù)據(jù)索引,比如用戶 ID 、媒體資源 ID 、商品 ID 、訂單號(hào)、注冊(cè)碼、優(yōu)惠碼等,防止爬蟲侵?jǐn)_。

重構(gòu)現(xiàn)有的發(fā)碼(ID 生成)機(jī)制:使用數(shù)據(jù)庫自帶的索引主鍵,但是對(duì)外進(jìn)行混淆。

對(duì)加密串進(jìn)一步混淆,并生成 URL 安全的字符串。

簡(jiǎn)單、統(tǒng)一的調(diào)用方法使用不同的編碼算法、同一算法的不同編碼參數(shù)、或自定義算法。

項(xiàng)目主頁

項(xiàng)目主頁及詳細(xì)文檔: https://github.com/ElfSundae/...

新包求 Star 求反饋

安裝
$ composer require elfsundae/laravel-hashid

對(duì)于 Lumen 或 Laravel 低于 5.5 版本,需要手動(dòng)注冊(cè) service provider:

ElfSundaeLaravelHashidHashidServiceProvider::class

發(fā)布配置文件:

# For Laravel application:
$ php artisan vendor:publish --tag=hashid

# For Lumen application:
$ cp vendor/elfsundae/laravel-hashid/config/hashid.php config/hashid.php
配置

Hashid 的配置文件和 Laravel 框架的眾多管理 (manager) 服務(wù)的配置極其類似,例如數(shù)據(jù)庫、緩存、隊(duì)列等。所以無需花費(fèi)額外時(shí)間來學(xué)習(xí)如何配置它。

我們來看個(gè)例子:

"default" => "id",

"connections" => [

    "basic" => [
        "driver" => "base64",
    ],

    "hashids" => [
        "driver" => "hashids",
        "salt" => "sweet girl",
    ],

    "id" => [
        "driver" => "hashids_integer",
        "salt" => "My Application",
        "min_length" => 6,
        "alphabet" => "1234567890abcdef",
    ],

    "base62" => [
        "driver" => "base62",
        "characters" => "f9FkqDbzmn0QRru7PBVeGl5pU28LgIvYwSydK41sCO3htaicjZoWAJNxH6EMTX",
    ],

],
使用

使用 hashid() 全局函數(shù)獲取 connection 或 driver 實(shí)例。

使用 hashid_encode() 全局函數(shù)進(jìn)行編碼。

使用 hashid_decode() 全局函數(shù)進(jìn)行解碼。

示例:

hashid_encode(123456);  // "xkNDJ"
hashid_decode("xkNDJ"); // 123456

hashid_encode(123456, "optimus");       // 1101845824
hashid_decode(1101845824, "optimus");   // 123456

hashid_encode(123456, "base62");        // "W7E"
hashid_encode("123456", "base62");      // "FMJUCzH4"
hashid_decode("W7E", "base62_integer"); // 123456
內(nèi)置驅(qū)動(dòng)

[Base62] : base62 , base62_integer

[Base64] : base64 , base64_integer

[Hashids] : hashids , hashids_hex , hashids_integer , hashids_string

[Hex] : hex , hex_integer

[Optimus] : optimus

控制臺(tái)命令

hashid:alphabet :生成隨機(jī)串 0-9a-zA-Z

hashid:optimus :生成 [Optimus] 編碼要用到的參數(shù)

自定義驅(qū)動(dòng)

要使用自己的編解碼算法,只需要?jiǎng)?chuàng)建一個(gè)類實(shí)現(xiàn) ElfSundaeLaravelHashidDriverInterface 接口即可,這個(gè)接口只有兩個(gè)方法: encodedecode 。初始化方法可選接收一個(gè)名為 $config 的配置參數(shù),同時(shí)也支持類型提示式依賴注入。

例如:

encrypter = $encrypter;

        $this->serialize = $config["serialize"] ?? false;
    }

    public function encode($data)
    {
        return $this->encrypter->encrypt($data, $this->serialize);
    }

    public function decode($data)
    {
        return $this->encrypter->decrypt($data, $this->serialize);
    }
}

要使用這個(gè)自定義驅(qū)動(dòng),在配置文件中指定它即可:

"connections" => [

    "custom" => [
        "driver" => AppHashidCustomDriver::class,
        "serialize" => false,
    ],

    // ...
]

調(diào)用示例:

hashid_encode(123456, "custom");

如果想為自定義驅(qū)動(dòng)使用一個(gè)短名字,注冊(cè)一個(gè)容器綁定即可:

$this->app->bind("hashid.driver.custom", CustomDriver::class);

更多使用方法請(qǐng)參考項(xiàng)目主頁:https://github.com/ElfSundae/...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/26052.html

相關(guān)文章

  • Laravel 模型間關(guān)系設(shè)置分表方法

    摘要:如這個(gè)很簡(jiǎn)單,那么在模型間關(guān)系比如,等使用這種方式的情況下,如何設(shè)置分表呢找了半天沒找到好的辦法,以為例,只好復(fù)制類中的方法,改成,并傳入表名,并且在函數(shù)里對(duì)象實(shí)例化后調(diào)用,果然可以。 在實(shí)際開發(fā)中經(jīng)常用到分庫分表,比如用戶表分成 100 張,那么這個(gè)時(shí)候查詢數(shù)據(jù)需要設(shè)置分表,比如 Laravel 的 Model 類中提供了 setTable 方法: /** * Set the ta...

    syoya 評(píng)論0 收藏0
  • laravel package收集

    摘要:查找保存下載用搭建自己的緩存?zhèn)}庫權(quán)限管理的好選擇基于封裝的后臺(tái)管理系統(tǒng),支持手機(jī)和端訪問支付寶風(fēng)格的驗(yàn)證器后臺(tái)系統(tǒng)微信接口的部署腳本開發(fā)的博客系統(tǒng)百度推送自動(dòng)記錄用戶行為擴(kuò)展一個(gè)項(xiàng)目管理系統(tǒng)根據(jù)生成對(duì)應(yīng)導(dǎo)航的狀態(tài) 1.debug https://github.com/barryvdh/l... showImg(https://segmentfault.com/img/bVmhWL); ...

    psychola 評(píng)論0 收藏0
  • Laravel一個(gè)后期靜態(tài)綁定

    摘要:實(shí)驗(yàn)一個(gè)抽象類,有個(gè)方法,通過延遲靜態(tài)綁定實(shí)例化并返回。這里如果把注釋打開,打印的就是重寫的值如果把抽象類改成普通類,改成的方式實(shí)例化,結(jié)果就不同了,打印的屬性都是各自類的屬性。 (原文地址,內(nèi)容以原文為準(zhǔn),可能修改或者補(bǔ)充:https://blog.tanteng.me/2017/...) 關(guān)于 PHP 的 new static 延遲靜態(tài)綁定,或者叫后期靜態(tài)綁定,在 Laravel...

    30e8336b8229 評(píng)論0 收藏0
  • 優(yōu)雅 Oss Flysystem 擴(kuò)展

    摘要:先上鏈接如果覺得幫助了你,節(jié)省了你的時(shí)間記得喲用戶直接用這個(gè)序言之前用過很多擴(kuò)展包但是暫時(shí)沒有一個(gè)用的順心的,一些擴(kuò)展包配置太復(fù)雜,還有的擴(kuò)展包不能集成文件驅(qū)動(dòng),對(duì)于喜歡優(yōu)雅編碼的同學(xué)可能不能忍受最近閑下來看了一些優(yōu)秀的開源項(xiàng)目,從中 showImg(https://iocaffcdn.phphub.org/uploads/images/201812/30/4430/zcyZkSQgZ...

    Yumenokanata 評(píng)論0 收藏0
  • Laravel 生成 Gravatar 頭像地址優(yōu)雅姿勢(shì)

    摘要:擴(kuò)展包提供了最簡(jiǎn)單優(yōu)雅的方式來生成全球公認(rèn)頭像地址。配置示例只有一個(gè)全局幫助函數(shù)使用示例為生成頭像地址,使用連接配置為的哈希值生成頭像地址,使用連接配置使用連接配置使用連接配置,并覆蓋參數(shù)為使用連接配置,并覆蓋參數(shù)為或者 Laravel Gravatar 擴(kuò)展包提供了最簡(jiǎn)單優(yōu)雅的方式來生成 Gravatar 全球公認(rèn)頭像地址。靈活方便的 API ,支持多連接配置,支持鏡像地址。 項(xiàng)目主...

    rubyshen 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<