• 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 密码是加密的。

    引入文件目录:

    app/Common/Phpaes.php

    composer.json 填写 文件夹位置

            "classmap": [
                "database/seeds",
                "database/factories",
                "app/Common"
            ]
    

    添加完后执行composer命令

     composer dumpautoload
    

    在下图位置加入你自己的解密逻辑。(PHP7.2+ 的mcrypt扩展需要自己手动安装哦 )。

    或者将array_walk_recursive 封装在Phpaes decryptOptions 方法中 laravel7 中上述方法可能不可用。

            try {
                Phpaes::decryptOptions($config);
            } catch (Throwable $th) {
                throw new Exception('Phpaes decryptOptions error'.$th->getMessage());
            }
    

     这时我们再打印配置看看。

    ok解密成功。页面也能正常访问。

    在laravel 引入自己的类有疑问,可参考 laravel 引入第三方库

    加密类我就不贴出来了。有需要的评论留言。

  • 相关阅读:
    VS2015复制VS2013的项目,编译报错
    Asp.Net MVC的几个文件上传方式
    一个基于Jquery的涂鸦插件
    Js 自定义日期格式的正则表达式验证
    无聊做的小游戏,斗牛.html
    MSSql Server 自定义导出
    Asp.Net Ambiguous match found 错误另一种解决方法
    韩天峰(Rango)推荐书目
    微信创建菜单报 must use utf-8 charset hint 错误
    InstallShield 2015 LimitedEdition VS2012 覆盖安装
  • 原文地址:https://www.cnblogs.com/kala00k/p/11144220.html
Copyright © 2020-2023  润新知