在CodeIgniter应用开发中,敏感数据保护和认证过滤器优化是两个容易被忽视却极为关键的环节。合理配置能有效防止配置文件泄露、接口越权以及会话劫持等风险。

一、敏感数据保护的基础做法
敏感数据通常包括数据库密码、第三方API密钥、用户令牌等。在CodeIgniter中,不建议将这些内容硬编码在控制器或模型里。
1. 使用环境变量
可以将敏感信息写入项目根目录下的.env文件,并在配置中通过getenv()读取。注意.env文件应在版本库中忽略。
<?php
// .env 内容示例(不要提交到git)
DB_PASSWORD=secret_123
// database.php 配置读取
$db['default'] = array(
'password' => getenv('DB_PASSWORD'),
);
2. 加密存储用户令牌
对于用户令牌类数据,可使用CodeIgniter的加密库进行存储加密。
<?php
$this->load->library('encryption');
$token = $this->encryption->encrypt($raw_token);
// 存入数据库前使用 $token
二、认证过滤器优化实践
传统做法是在每个控制器方法中调用认证函数,造成大量重复代码。可通过过滤器统一处理。
1. 使用钩子前置校验
在application/config/hooks.php中定义pre_controller钩子,集中判断登录状态。
<?php
$hook['pre_controller'] = array(
'class' => 'Auth_filter',
'function' => 'check_login',
'filename' => 'Auth_filter.php',
'filepath' => 'hooks'
);
2. 白名单跳过公开接口
在过滤器内部维护无需认证的路径列表,避免影响登录页与公开API。
<?php
class Auth_filter {
public function check_login() {
$open = array('user/login', 'api/public');
$uri = uri_string();
if (in_array($uri, $open)) {
return;
}
if (empty($_SESSION['user_id'])) {
redirect('user/login');
}
}
}
三、综合建议
将敏感配置外置并结合加密存储,再把认证逻辑下沉到过滤器层,可显著降低维护成本与安全漏洞概率。建议定期审查.env权限及过滤器规则覆盖情况。
| 措施 | 作用 |
|---|---|
| 环境变量 | 隔离密码与代码 |
| 加密库 | 保护令牌类数据 |
| 认证过滤器 | 统一拦截未授权访问 |
安全优化应循序渐进,先堵住配置泄露,再收敛接口权限。
CodeIgniter敏感数据保护认证过滤器修改时间:2026-07-26 21:09:32