PHP

为Thinkphp3.2.3当中的Redis操作类增加强制密码检查

字号+ 编辑: 国内TP粉 修订: IT男在阿里 来源: ThinkPHP 2023-09-12 我要说两句(0)

本文讲述如何在thinkphp3.2.3当中的redis操作类文件进行安全性补充。

redis默认是没有密码的, 但绑定到本机ip使用,当前增加安全要求对redis用密码访问

ThinkPHP的3.2.3版本 (路径为 Library\Think\Cache\Driver\Redis.class.php 以及Library\Think\Session\Driver\Redis.class.php) 的代码需要补充安全设定。

构造方法需要增加最后三行内容

    public function __construct($options = [])
    {
        if (!extension_loaded('redis')) {
            E(L('_NOT_SUPPORT_') . ':redis');
        }
        $data_redis_db = C('REDIS_DB');
        $options       = array_merge([
            'host'       => C('REDIS_HOST') ?: '127.0.0.1',
            'port'       => C('REDIS_PORT') ?: 6379,
            'timeout'    => C('DATA_CACHE_TIMEOUT') ?: false,
            'persistent' => false,
            'auth'       => C('REDIS_AUTH') ? C('REDIS_AUTH') : false,
            'db'         => empty($data_redis_db) ? 0 : $data_redis_db,
        ], $options);

        $this->options           = $options;
        $this->options['expire'] = isset($options['expire']) ? $options['expire'] : C('DATA_CACHE_TIME');
        $this->options['prefix'] = isset($options['prefix']) ? $options['prefix'] : C('DATA_CACHE_PREFIX');
        $this->options['length'] = isset($options['length']) ? $options['length'] : 0;
        $func                    = $options['persistent'] ? 'pconnect' : 'connect';
        $this->handler           = new \Redis;
        $options['timeout'] === false ?
        $this->handler->$func($options['host'], $options['port']) :
        $this->handler->$func($options['host'], $options['port'], $options['timeout']);
        // 增加代码,设置redis安全性,增加认证密码
        if (isset($options['auth']) && $options['auth']) {
            $this->handler->auth($options['auth']);
        }
    }


阅完此文,您的感想如何?
  • 有用

    0

  • 没用

    0

  • 开心

    0

  • 愤怒

    0

  • 可怜

    0

1.如文章侵犯了您的版权,请发邮件通知本站,该文章将在24小时内删除;
2.本站标注原创的文章,转发时烦请注明来源;
3.交流群: PHP+JS聊天群

相关课文
  • mac开发接入微信公众号接口返回报错 cURL error 56: SSLRead() return error -9806

  • pecl安装程序时报错Array and string offset access syntax with curly braces is no longer supported

  • PHP的换行符是什么

  • 由于商家传入的H5交易参数有误,该笔交易暂时无法完成,请联系商家解决

我要说说
网上宾友点评