内网Yii系统安全加固需关闭非必要入口、限制可信来源、隔离敏感目录、实施RBAC权限控制、启用HTTPS与CSRF验证、加密敏感数据并严格管控日志权限。

非常适合。内网业务系统对稳定性、可控性和响应速度要求高,而 Yii 的轻量架构、明确的请求生命周期和低外部依赖,恰恰契合这类场景——它不追求云原生弹性,但胜在逻辑清晰、调试可见、部署简单。
核心安全加固点:从入口到数据落地
内网不等于绝对安全。横向移动、U盘摆渡、终端失陷、管理账号复用等风险真实存在。加固不是堆功能,而是堵住高频攻击路径:
-
关闭所有非必要入口:彻底删除或注释
gii模块配置;确认YII_DEBUG未定义或设为false;禁用index.php中的display_errors = 1,改用日志文件记录错误(级别限为error和warning) -
强制请求可信来源:在
main.php的request组件中设置'trustedHosts' => ['10.0.0.0/8', '192.168.0.0/16'](按实际内网段调整),拒绝非内网 IP 的任何请求 -
敏感目录物理隔离:确保 Web 服务器(Nginx/Apache)已配置禁止访问
protected/、runtime/、vendor/等目录。例如 Nginx 中添加:location ~ ^/(protected|runtime|vendor)/ { deny all; }
权限与会话控制:避免“一账通吃”
内网系统常因图省事使用统一管理员账号,这是最大隐患。Yii 的 RBAC 能快速落地最小权限原则:
- 用
yii rbac/init初始化权限表,为不同岗位(如“录入员”“审核员”“报表查看员”)创建角色,而非只设一个admin - 控制器中用
behaviors()限制动作级访问:['class' => 'yii\filters\AccessControl', 'rules' => [['allow' => true, 'roles' => ['@'], 'verbs' => ['POST']],]] - 会话 Cookie 必须设
httpOnly和secure(即使内网也建议开启 secure,防代理劫持),并在request组件中配置'enableCsrfValidation' => true
HTTPS 与通信可信:内网也要加密
别以为内网不用 HTTPS。ARP 欺骗、交换机镜像、恶意终端嗅探在内网同样有效。Yii 不处理证书,但必须适配:
- Web 服务器(如 Nginx)配置自签名或内网 CA 签发的证书,并启用
ssl_prefer_server_ciphers on和 TLS 1.2+ 协议 - 在 Yii 配置中显式声明 HTTPS 环境:
'request' => ['secure' => true, 'cookieParams' => ['httpOnly' => true, 'secure' => true]] - 检查
Url::to()生成的链接是否带https://;若仍为 http,说明 Web 服务器未正确透传X-Forwarded-Proto: https头,需补全
数据与日志:守住最后一道防线
攻击者突破应用层后,往往直奔数据库和日志文件:
- 数据库连接使用独立账号,仅授予业务所需最小权限(如禁用
DROP、CREATE、FILE) - 敏感字段(身份证、手机号、金额)在模型层用
beforeSave()加密存储,密钥不硬编码,存于环境变量或配置中心 - 日志写入
runtime/logs/,该目录权限设为750,属主为 Web 进程用户(如www-data),禁止组外可读


















