TP5函数文件如何写密码

冬枫君_7648

冬枫君_7648

2026-09-08

633人浏览

原创

tp5中密码严禁硬编码在函数内,必须存于配置文件或数据库;正确位置是app/database.php,且需url编码特殊字符、用127.0.0.1代替localhost,并通过.env和env()读取密钥以保障安全。

tp5函数文件如何写密码

TP5 里没有“函数文件写密码”这回事,密码必须存在配置文件或数据库中,硬编码进函数是严重安全漏洞。

为什么不能在函数里写密码

把数据库密码、API密钥等直接写死在 function 或工具类里,会导致:

  • 代码提交到 Git 时密码直接泄露(哪怕设了 .gitignore,也容易误传)
  • 多人协作时权限失控,无法按环境区分密码(开发/测试/生产应不同)
  • 运行时若发生错误并开启调试,print_r($this) 或异常堆栈可能意外输出含密码的对象
  • TP5 的 runtime 目录缓存会编译模板和配置,若密码混在逻辑代码中,可能被静态分析工具或缓存文件间接暴露

正确位置:只在 app/database.php 配置数据库密码

TP5 强制使用「应用级配置覆盖」,所有运行时生效的数据库连接参数,必须写在 app/database.php 中,不是根目录那个同名文件。

示例(请严格按此结构):

return [
    'type'        => 'mysql',
    'hostname'    => '127.0.0.1', // 不要用 'localhost',避免 Unix socket 连接干扰
    'database'    => 'blog',
    'username'    => 'root',
    'password'    => 'pass%40123', // 密码含 @ / 等字符必须 URL 编码
    'hostport'    => '3306',
    'prefix'      => 'tp_',
    'debug'       => true,
];

注意点:

Adobe Podcast
Adobe Podcast

Adobe Podcast是一款AI音频处理工具,Adobe推出的在线AI音频录制和编辑工具。

下载
  • password 字段值若含 @/:,必须用 rawurlencode() 编码,例如 pass@123pass%40123
  • hostname127.0.0.1,不写 localhost,否则 MySQL 可能走 socket 而非 TCP,导致连接失败且报错晦涩
  • 该文件不能被 Web 直接访问 —— TP5 的 public 是唯一入口,app/ 目录天然受保护

需要动态加解密?用独立服务类,但密钥仍走配置

比如 AES 加密用户手机号,密钥不能写在 Aes 类的构造函数里,而应从配置读取:

// app/common/secret/Aes.php
namespace app\common\secret;

use think\Config;

class Aes
{
    protected $secret_key;

    public function __construct()
    {
        // 从配置读,而非硬编码
        $this->secret_key = Config::get('cipher.aes_key') ?: 'fallback-key-123';
    }

    public function encrypt($data)
    {
        return openssl_encrypt($data, 'AES-128-ECB', $this->secret_key, 0);
    }
}

对应在 app/config.php 里加:

'cipher' => [
    'aes_key' => 'your-32-byte-secret-key-here', // 生产环境务必用 env() 从 .env 读
],

更安全的做法是:在 .env 文件中写 CIPHER_AES_KEY=xxx,然后用 env('CIPHER_AES_KEY') 读取 —— 这样部署时可完全隔离密钥。

真正容易被忽略的是:runtime 目录权限和 .env 文件是否被 Web 服务器意外暴露。只要这两处出问题,再规范的密码管理也白搭。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

2026.09.23

0

15

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

2026.09.23

0

15

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

2026.09.23

0

15

Conan创建软件包配方指南
Conan创建软件包配方指南

本专题介绍通过conanfile.py创建软件包的方法,讲解包名、版本、依赖和构建设置等基础信息,以及source、build、package、package_info等常用方法的作用及编写思路。

2026.09.22

0

12

Conan二进制包配置指南
Conan二进制包配置指南

本专题介绍Conan根据操作系统、编译器、架构和构建类型生成二进制包的方法,讲解Profile、Settings、Options及Package ID的作用,帮助管理不同平台和编译环境下的包版本。

2026.09.22

0

13

Conan私有仓库搭建教程
Conan私有仓库搭建教程

本专题系统的讲解Conan私有仓库的搭建流程,涵盖仓库服务部署、存储目录配置、用户认证、权限划分和远程地址添加,并介绍内部C++依赖包的上传、下载及版本维护方法。

2026.09.22

0

19

loomy官网入口地址合集
loomy官网入口地址合集

本专题汇总了 Loomy 桌面 AI 助理的官方入口地址合集及使用指南。提供 macOS 与 Windows 客户端下载 。Loomy 是讯飞推出的桌面级 AI 工作搭子,支持文件整理、数据分析、网页操作及通过飞书/钉钉远程操控电脑,助你高效完成本地办公任务 。

2026.09.22

0

19

NumPy常见函数使用方法
NumPy常见函数使用方法

本专题整理 NumPy 常见函数使用方法相关教程,覆盖函数大全、参数用法、数组运算、统计聚合、排序处理、where 条件筛选、linspace 创建数列等常用场景,帮助读者快速掌握 NumPy 函数调用思路和实际数据处理技巧。

2026.09.22

0

21

NumPy性能优化版本更新与常见报错排查
NumPy性能优化版本更新与常见报错排查

本专题整理 NumPy 性能优化、版本更新与常见报错排查相关教程,覆盖向量化计算、广播性能、内存布局、NumPy 2.0 升级、版本兼容冲突、安装导入报错、dtype 溢出、矩阵运算异常和 broadcasting 报错修复,帮助读者系统掌握 NumPy 性能调优与问题定位方法。

2026.09.22

20

25

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.1万人学习