- 老库升级强制项: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 全部加固点;已知残留(开卡扣款无事务)记录在案
3.7 KiB
3.7 KiB
部署说明(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_gpcshim、count(字符串)修复) - MySQL ≥5.6(InnoDB;连接 charset utf8)
- Web 目录使用 ASCII 路径(本部署 PHP 无法访问含中文的路径,如
D:\桌面\...)
2. 全新部署
- 仓库代码放入 Web 根(如
D:\phpstudy_pro\WWW\wenquanauth) - 建库
wenquan_auth(utf8),导入仓库自带wenquan_auth.sql(该 dump 已含sq_admin.password varchar(255)) - 写本地 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 该覆盖文件。 - 本地执行
install.php完成初始化(install.php 为本地文件,不随仓库分发,已 gitignore; 安装完成后建议删除或禁用)。安装会捕获sq_config.weburl——请确认其 host 部分为真实 站点域名(P0-07 起支付回调/结果页跳转 URL 的 host 信任该配置的 host 部分,缺失才回退 HTTP_HOST 旧行为)。 - 启动 PHP CGI(phpStudy:127.0.0.1:9000)并配 nginx vhost:
快速自检可用内置服务器(单 worker,仅开发验收):
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; } }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,不在本轮范围。