文档: 部署说明(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 全部加固点;已知残留(开卡扣款无事务)记录在案
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
# 部署说明(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,不在本轮范围。
|
||||
Reference in New Issue
Block a user