Commit Graph
326 Commits
Author SHA1 Message Date
ypsdf1 eb741beeb4 更新.gitignore以屏蔽密钥文件 2026-10-01 10:06:19 +08:00
ypsdf1 186e670400 SN管理:修正顶层签发入口里被转义成字面量的 emoji 2026-09-30 17:41:53 +08:00
ypsdf1 43fd8e2891 SN管理:顶层办理签发入口(玩家ID+设备类型直发),详情页旧签发按钮移除 2026-09-30 17:32:08 +08:00
ypsdf1 b6983f99e4 新增第四层安全防护:全局限流20次/分钟/IP,白名单与带secret的内部调用豁免,超限挂起连接不返回数据 2026-09-30 15:56:16 +08:00
ypsdf1 4c2e075667 配置页防回车误触修复:回车不再命中首个提交按钮「重新生成令牌」 2026-09-30 13:30:48 +08:00
ypsdf1 27da2b5c05 SN日志动作列中文化:admin.php与player.php新增SN_ACTION_CN映射,覆盖issue_admin/cancel_force等全部动作值 2026-09-30 12:31:17 +08:00
ypsdf1 a97f9274cc 管理端 issue 命令 reason 文案修正:办理签发单独文案,不再误标为管理员强制执行 2026-09-30 12:20:11 +08:00
ypsdf1 f033e71095 SN管理端新增 issue 办理签发命令:两条件硬校验并分别提示,isForce 固定为 0;管理端详情页加入办理签发按钮与确认文案 2026-09-30 12:11:49 +08:00
ypsdf1 51e418ac16 需求4护栏:重置访问密钥不再关闭二次验证——security.php新增2FA快照/语义指纹/回滚/写后比对四函数,rotate_token与save_whitelist走最小写入+护栏,误关即回滚报错 2026-09-30 11:19:00 +08:00
ypsdf1 b7b2647ef1 需求3脱敏:config.php改为占位符分发(敏感信息不入库),清除admin.php公网前端13处与land_api.php的硬编码SECRET_KEY,改为服务端注入/常量比对 2026-09-30 11:18:41 +08:00
ypsdf1 a46737d64b SN注销冷静期分流:管理员强制注销跳过1小时冷静期,代办注销保持三条件门槛+1小时冷静 2026-09-29 23:57:27 +08:00
ypsdf1 c46c9ebdfe 紧急加固三层:admin.php 入口令牌门禁 + 2FA 扫码绑定与精确诊断
第三层(新增,config.php 的 SEC_ACCESS_TOKEN):
- 只有 admin.php?token=<令牌> 才放行,缺/错令牌一律返回 nginx 原生 404
  (与"文件真的不存在"逐字节一致,探测者无从判断),令牌检查置于白名单之前
- 登录接口在密码校验通过后才下发 token,2FA 通过与收银台跳转由服务端补拼
- 入口页加 Referrer-Policy: no-referrer,防令牌经外链 Referer 泄露
- 配置页展示后台唯一入口地址,支持一键重新生成令牌

第一层修复(2FA 验证码"无效"):
- secTotpVerify 容错窗口 ±30 秒扩到 ±90 秒
- 新增 secTotpDiagnose:失败时区分"密钥没对上"与"设备时钟偏移多少秒"并给出处置指引
- Base32 解码兼容空格/连字符与 0/1/8/9 手误,避免密钥被静默截短
- 验证页倒计时与服务器时间显示改用服务端时钟基准
- 密钥生成改幂等,"重新生成"二次确认,防止已扫码密钥被误作废

第二层(二维码):
- admin_2fa_setup.php 内联 qrcode-generator(MIT) 生成 otpauth 二维码,离线可用
- 后台侧边栏新增"安全配置"入口;admin_2fa_setup.php?boot= 在白名单 IP 下同样生效

已通过线上端到端验证 22 项 + 二维码 OpenCV 往返解码校验。
2026-09-29 22:55:46 +08:00
ypsdf1 fd03189f31 SN三条件门槛:报失/补办/注销统一前置校验与最小化提示(不透露未达标项),web_item_sn 新增 detached_at/own_chest,管理端详情展示逐条判定并拆分强制注销/代办注销 2026-09-29 20:22:20 +08:00
ypsdf1 52e07ec9de fix: SN回执幂等防止重复补发,后台命令下发后轮询回执直到出结果 2026-09-29 18:03:32 +08:00
ypsdf1 345e1e9a9b fix: SN目录快照不再把web_item_sn.cancel_time清零,保留PHP端已写入的注销时间 2026-09-29 16:48:51 +08:00
ypsdf1 045d9f60b8 SN接口:管理员命令带 is_force 强制标记(Java 侧仅本次绕过冷静期),注销前增加位置前置检查拒绝箱内/他人手上物品,命令回执按执行结果更新状态 2026-09-29 13:38:35 +08:00
ypsdf1 18bd1e9b19 feat: SN防伪后端 api/sn.php、8张SN数据表与玩家端/管理端SN页面 2026-09-29 11:16:32 +08:00
ypsdf1 4db131082c fix: 永久封禁玩家禁止登录Web后台、正版验证粘贴页响应异常时回查真实状态
- core.php 新增 playerWebBanReason():查 web_player_bans 名字封禁(永久/未过期),expire_time 兼容Java推送的毫秒单位;validateWebAccess 接入,商城/CDK/余额/token校验一律拒绝
- api/sync.php 四个登录入口全部拦截:validate_weblogin_token、web_login_request、send_email_code、verify_email_code
- api/minecraft_auth.php:success/error 清空输出缓冲保证纯JSON;新增 action=status 会话真实状态查询;粘贴页提交响应异常时回查状态,已验证则如实提示通过,不再误报"服务器响应异常"
2026-09-28 00:03:07 +08:00
ypsdf1 eaadc0bd64 chore: gitignore忽略本地开发文档《代码关联关系.md》 2026-09-27 21:44:51 +08:00
ypsdf1 f2b87325e1 feat: 封禁IP同步Web黑名单(须持游戏内/web token)、清空队列联动清理pending登录请求 2026-09-27 21:23:31 +08:00
ypsdf1 6a74dfee91 修复单件附魔书结算时 web_transactions 唯一约束冲突 2026-07-21 16:43:18 +08:00
ypsdf1 d92f1f47a9 安全加固: .gitignore添加deploy_*.py排除规则,移除deploy_php_only.py、sync.php.bak、debug_online.php的git跟踪 2026-07-20 13:56:59 +08:00
ypsdf1 c3d9c0925d 修复4个问题: 用户组购买确认弹窗、在线曲线清理、高频出售缓冲、每小时活跃数据 2026-07-20 13:18:58 +08:00
ypsdf1 312f40c94a 修复活动过期后仍走活动价格的bug:前端必须校验discount_active字段 2026-07-17 23:32:05 +08:00
ypsdf1 0098efda3f fix: 限时折扣过期时间改为当天0:00即过期 2026-07-17 17:17:59 +08:00
ypsdf1 1d5f500a28 fix: 限时折扣过期逻辑修复 + Minecraft OAuth功能改进 2026-07-17 16:51:38 +08:00
ypsdf1 ff83406013 minecraft_auth.php: 改用公共客户端ID实现OAuth,新增verify_code和paste_code_page端点 2026-07-17 14:02:38 +08:00
ypsdf1 d539cc10bf 改用Microsoft Graph User.Read scope(不依赖Xbox Live API权限) 2026-07-17 11:41:00 +08:00
ypsdf1 e30c37ef64 修改OAuth scope为XboxLive.signin 2026-07-17 11:36:20 +08:00
ypsdf1 51aaedc2b3 修复OAuth error回调路由:invalid_scope等错误也能正确显示 2026-07-17 11:34:48 +08:00
ypsdf1 b7c83903ca 修复Microsoft OAuth回调路由:自动检测code+state参数路由到callback 2026-07-17 11:15:08 +08:00
ypsdf1 65fc468ce1 新增Microsoft OAuth正版验证API
1. 新增minecraft_auth.php
   - 完整的Microsoft OAuth流程
   - 支持create_session/check_session/callback/verify_premium
   - 验证状态持久化到SQLite

2. 配置项在pay_secrets.php中(gitignored,手工FTP上传)
2026-07-17 10:23:07 +08:00
ypsdf1 ace705682c 新增支付邮件通知+玩家订单查询功能
1. 支付成功后自动发送付款凭据邮件(仅绑定邮箱的玩家)
   - handleNotify回调 + queryOrder补单两条路径均触发
   - 邮件包含订单号、商品、金额、到账债券、支付时间
   - 异步静默发送,不影响主流程

2. 玩家端新增「我的订单」页面
   - 后端新增my_orders action查询pay_orders表
   - 前端展示订单列表(状态标签、金额、债券、时间)
   - 支持刷新按钮
2026-07-16 23:31:34 +08:00
ypsdf1 b90eeb2bcd 更新MySQL连接信息:平台重建后数据库凭据变更 2026-07-16 22:22:27 +08:00
ypsdf1 7e3af6d7d7 添加折扣价格硬锁规则:优惠后价格必须小于原价,且不低于0.01元;售价低于0.01元的商品不支持折扣 2026-07-16 19:02:36 +08:00
ypsdf1 f3919a8715 实现折扣价格功能:数据库表、后端API、前端界面完整支持折扣价格字段 2026-07-16 18:33:21 +08:00
ypsdf1 00da16abb6 订正售罄≠下架:售罄商品仍展示仅禁止购买,仅下架(is_active=0)才隐藏;前端售罄按钮置灰 2026-07-16 17:38:01 +08:00
ypsdf1 5fcecdaefd 彻底修复库存0变-1:库存框改text+严格校验(空=无限,0=售罄,非法报错不再静默转-1) 2026-07-16 17:18:49 +08:00
ypsdf1 e2808276c0 修复库存=0误转为-1的bug + 盲盒显示??及随机消费语录 2026-07-16 16:48:31 +08:00
ypsdf1 a8303ba772 修复pay.php充值商品500错误:内联parseExpireDate函数(原函数仅在recharge_orders_api.php中定义) 2026-07-16 16:18:26 +08:00
ypsdf1 de589d2683 实现前端动态加载充值商品功能:从后端shop_configs表读取商品,支持选择商品支付 2026-07-16 15:33:27 +08:00
ypsdf1 433735d595 新增gitignore:忽略调试文件diag_db_content.php 2026-07-16 15:08:19 +08:00
ypsdf1 304bd8f9ef 修复充值商店配置500错误:getParam参数不匹配+前端防重复提交 2026-07-16 15:01:33 +08:00
ypsdf1 6da7f58281 新增充值商店配置管理功能:库存、临时优惠、售价、债券范围、上下架 2026-07-16 14:39:44 +08:00
ypsdf1 95630c7609 修复数据库分离: pay_orders→orders.db + web_transactions→web.db,双库不再混用 2026-07-16 14:03:50 +08:00
ypsdf1 61bc4672a9 修复支付锁定: 支付成功后恢复按钮允许发起新订单 2026-07-16 13:30:57 +08:00
ypsdf1 4afc2470b0 修复对账页面空白: 前端d.orders改为d.data.orders(success()包装格式不匹配) 2026-07-16 13:14:49 +08:00
ypsdf1 07689f235b 修复对账页面空白: pay_orders迁移到orders.db独立库+自动迁移逻辑 2026-07-16 12:36:27 +08:00
ypsdf1 e0bb61f23a 加固MySQL凭据: 默认值硬编码+全局变量显式设置 2026-07-16 12:22:10 +08:00
ypsdf1 ea20701db5 修复表名前缀: 添加global声明确保$PLATFORM_DB_PREFIX在函数内可用 2026-07-16 12:18:56 +08:00