laravel配置加解密


基於安全考慮,我們php項目配置文件中密碼應該是加密的,laravel中也提供了OpenSSL 的 AES-256-CBC 來進行加密

但是如果我們項目配置的是其他加密方式,且希望以最少的改動實現讀取加密配置並解密,如何修改代碼呢?

首先我們需要了解laravel(我的laravel是5.5)的配置加載流程。

laravel 配置文件加載由配置類 /Illuminate/Foundation/Bootstrap/LoadConfiguration.php 的bootstrap 方法完成。

    public function bootstrap(Application $app)
    {
        $items = [];
      //首先查看是否有配置緩存 如果有生成的配置緩存 會存在文件 /bootstrap/cache/config.php
        if (file_exists($cached = $app->getCachedConfigPath())) {
            $items = require $cached;
            $loadedFromCache = true;
        }
$app->instance('config', $config = new Repository($items));      //如果沒有緩存則讀取/config目錄下所有的配置文件 if (! isset($loadedFromCache)) { $this->loadConfigurationFiles($app, $config); }
     //此處的$config就是讀取到和加密配置 $app->detectEnvironment(function () use ($config) { return $config->get('app.env', 'production'); });
    //這個位置一會寫入解密處理邏輯 date_default_timezone_set($config->get('app.timezone', 'UTC')); mb_internal_encoding('UTF-8'); }

 此時我在.env配置加密的密碼

 

bootstrap()方法讀取到的$config mysql 密碼是加密的。

 

在下圖位置加入你自己的解密邏輯,不過需要提前引入自己的解密類(PHP7.2+ 的mcrypt擴展需要自己手動安裝哦 )。

 這時我們再打印配置看看。

ok解密成功。頁面也能正常訪問。

在laravel 引入自己的類有疑問,可參考 laravel 引入第三方庫

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM