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

74 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 部署说明(P0 加固版,2024 QuanAuth)
> 基线:PHP 7.3.4 与 PHP 8.2.9 双版本、MySQL(utf8/InnoDB)、nginx 8081 与内置服务器 8082 双通道回归全过。
> 提交序列:加固-01~12(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
<?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:
```nginx
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. 老库升级(本版本首启必须执行)
```sql
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,不在本轮范围。