Skip to content

29 安全加固与部署检查 ​

可得财务 1.0.3 对认证、支付、授权和数据库输入进行了系统加固。本页只公开部署侧要求,不公开授权通信协议、内部密钥或可用于绕过验证的实现细节。

升级后必须检查 ​

  1. 生产环境使用 PHP 8.1–8.4,并启用 openssl、curl、mbstring、gd、pdo_mysql
  2. 全站启用 HTTPS,HTTP 仅用于跳转 HTTPS
  3. .env 中 APP_DEBUG=false
  4. JWT_SECRET 由安装器随机生成,长度不少于 32 字节;禁止使用示例值
  5. runtime/、.env、.installed 不允许通过 Web 访问
  6. 更新包必须通过 SHA-256 校验;配置发布公钥后还必须通过数字签名

登录与注册保护 ​

  • 管理后台、会员登录和会员注册均强制人机验证码
  • 验证码一次性使用,错误次数达到上限后立即失效
  • 多次密码错误会触发临时封禁;不存在的账号与停用账号使用统一错误提示
  • 演示模式不再提供固定口令账号,也不能免密进入后台
  • 密码至少 10 位,并同时包含字母和数字

支付安全 ​

  • 支付入账只接受服务器到服务器的 POST 异步通知
  • 浏览器同步跳回只负责展示结果,不能修改账单状态
  • 回调签名、交易状态、订单号、交易号和金额必须全部校验通过
  • 查询字符串不能覆盖签名正文中的字段
  • 零元单防伪造(Build 191+):零元单回调金额必须 ≥ 0、交易号不能为空;若账单总额不为 0 却收到零元通知,直接拒绝并记录
  • EpayGateway 签名可配(Build 191+):支持 SHA256 / MD5 两种签名算法,后台可切换;推荐生产环境使用 SHA256

授权安全 ​

  • 激活与心跳均使用加密认证通道
  • 授权码不会以明文写入客户端磁盘
  • 客户端与授权站同时限制激活尝试频率
  • 公开授权状态只返回最小状态,不返回安装标识、授权 ID 等内部信息
  • 授权状态文件使用原子写入、文件锁和可验证备份

数据库与输入 ​

  • 业务查询使用 ORM 或预编译参数
  • 安装器严格限制数据库名、表前缀、主机和端口格式
  • 后台模糊搜索会限制长度并转义 %、_ 等通配符
  • 商品富文本使用标签、属性和 URL 协议白名单净化
  • 文件上传类型校验(Build 191+):Logo 等上传不仅检查扩展名,还通过 finfo 读取真实 MIME 类型进行二次校验,拒绝扩展名与 MIME 不匹配的文件

发现问题 ​

请不要在公开群发送数据库、授权码、密钥或完整错误日志。提交问题时仅提供:

  • 系统版本与 build
  • PHP / MySQL 版本
  • 已脱敏的错误时间和错误类型
  • 可复现步骤(不要包含密钥)

上一篇:28 授权与安装接入


Build 191 安全更新摘要 ​

漏洞等级修复项涉及文件
HIGHEpayGateway 支持 SHA256 签名(可配置 sign_type)app/common/gateway/driver/EpayGateway.php
HIGH零元单防伪造:金额 ≥ 0、交易号非空、账单总额校验、float round 保护app/common/service/PaymentService.php
HIGH命令注入防护:Composer 路径白名单校验app/common/service/InstallService.php
HIGH文件上传绕过防护:finfo MIME 二次校验app/admin/controller/Setting.php
MEDIUM自定义后台路径 nginx 自动插入:切换路径后自动同步 vhost 配置app/common/service/InstallService.php
MEDIUM环境检测全部 14 项正常返回(pre-router bypass 修复)public/index.php

可得财务 © 2026