Files
wenquanauth/部署说明.md
T
youpaishidifu 3414852535 文档: 部署说明(P0 加固版)——环境/新部署/老库升级 ALTER/回归清单/已知残留
- 老库升级强制项:ALTER TABLE sq_admin MODIFY password varchar(255) NOT NULL
  (P0-05 bcrypt 哈希入库;新装走 wenquan_auth.sql 无需执行)
- 本地覆盖:function/config.local.inc.php(gitignore)自动被 config.inc.php include
- 回归验收清单覆盖 P0-01~12 全部加固点;已知残留(开卡扣款无事务)记录在案
2026-10-10 13:32:38 +08:00

3.7 KiB
Raw Blame History

部署说明(P0 加固版,2024 QuanAuth)

基线:PHP 7.3.4 与 PHP 8.2.9 双版本、MySQL(utf8/InnoDB)、nginx 8081 与内置服务器 8082 双通道回归全过。 提交序列:加固-0112(P0-①⑩ + P0-05b)。

1. 环境要求

  • PHP 7.3 ~ 8.2(ePay 内置库已做 PHP8 兼容:get_magic_quotes_gpc shim、count(字符串) 修复)
  • MySQL ≥5.6(InnoDB;连接 charset utf8)
  • Web 目录使用 ASCII 路径(本部署 PHP 无法访问含中文的路径,如 D:\桌面\...)

2. 全新部署

  1. 仓库代码放入 Web 根(如 D:\phpstudy_pro\WWW\wenquanauth)
  2. 建库 wenquan_auth(utf8),导入仓库自带 wenquan_auth.sql (该 dump 已含 sq_admin.password varchar(255))
  3. 写本地 DB 覆盖配置 function/config.local.inc.php(gitignore,不入库):
    <?php
    $G['db']['server'] = 'localhost';
    $G['db']['user']   = '你的DB用户';
    $G['db']['pass']   = '你的DB密码';
    $G['db']['dbname'] = 'wenquan_auth';
    
    function/config.inc.php 已内置自动 include 该覆盖文件。
  4. 本地执行 install.php 完成初始化(install.php 为本地文件,不随仓库分发,已 gitignore; 安装完成后建议删除或禁用)。安装会捕获 sq_config.weburl——请确认其 host 部分为真实 站点域名(P0-07 起支付回调/结果页跳转 URL 的 host 信任该配置的 host 部分,缺失才回退 HTTP_HOST 旧行为)。
  5. 启动 PHP CGI(phpStudy:127.0.0.1:9000)并配 nginx vhost:
    server {
        listen 8081;
        server_name 127.0.0.1;
        root D:/phpstudy_pro/WWW/wenquanauth;
        index index.php;
        location / { try_files $uri $uri/ /index.php?$args; }
        location ~ \.php$ {
            fastcgi_pass 127.0.0.1:9000;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }
    }
    
    快速自检可用内置服务器(单 worker,仅开发验收): php -S 127.0.0.1:8082 -t D:\phpstudy_pro\WWW\wenquanauth

3. 老库升级(本版本首启必须执行)

ALTER TABLE sq_admin MODIFY password varchar(255) NOT NULL;

P0-05 起 admin/agent/user 密码统一以 bcrypt(60 位)入库;列不扩容则升级后的账号 首次登录会因哈希写入失败而登录异常。 旧 md5(admin)/明文(agent、user)密码无需手动迁移:首次登录成功即惰性升级; P0-05b 保证后续登录不重写哈希,同账号并行会话不被破坏。

4. 回归验收清单

项目 期望
admin/agent 双会话 两个会话 checklogin 均有效,DB 哈希不再改写
tckm.html 状态开关 返回「成功」且落库(原「啊嘞嘞???」,P0-09)
tckm.html 导出/清空 JSON code=1+sign / code=2+nums,下载内容正确
卡密支付 czkm 正常扣减;并发双单恰一单成功,无双花(P0-07)
代理余额 yezf money 与 allspend 原子只扣/加一次
免费订单跳转 URL host 取自配置;Host: evil.com 投毒无效
ePay 回调 notify/return 条件落库幂等;代理余额不被清零
PHP 8.2 运行时 ePay 库无致命错误
XFF 取真实 IP 私有网段被跳过(P0-08)
0 折封禁 折率=0 时开卡/购商品被拒 code=-5(P0-10)
SQLi 回归 动态列名/裸拼值注入全部拒绝(P0-06)

5. 已知残留(记录在案,未纳入本轮 P0)

  • agent creatkey/creatfidkey/buyagent 的扣款与插入仍无事务:插入失败时钱照扣 (2019 遗留)。建议后续按 P0-07 同款原子条件 UPDATE + 失败补偿模式改造。
  • 审计文档中的 CAPTCHA 强化、PHP 8.3 基线清理属 P1/P2,不在本轮范围。