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