nonpublic-action-gate

20260916-201504 轮 · 看它的历史
靶子 http://localhost:20098(TP8_PORT=20098,容器 wt_h8_tp8)

── A 组:非 public / 魔术方法必须 404(本次改动的核心通路)──
  ✅ Login/initialize → 404  实际 404
  ✅ Index/initialize → 404  实际 404
  ✅ User/initialize → 404  实际 404
  ✅ Flash/initialize → 404  实际 404
  ✅ Order/initialize → 404  实际 404
  ✅ WxApi/initialize → 404  实际 404
  ✅ WxAuth/initialize → 404  实际 404
  ✅ WxWeb/initialize → 404  实际 404
  ✅ PayV2/initialize → 404  实际 404
  ✅ WxPayV3/initialize → 404  实际 404
  ✅ DDM/initialize → 404  实际 404
  ✅ SucaiManager/initialize → 404  实际 404
  ✅ Login/__construct → 404  实际 404
  ✅ User/__construct → 404  实际 404
  ✅ Login/__call → 404  实际 404
  ✅ Login/_denyDirectUrlAccess → 404  实际 404
  ✅ Login/_notFound → 404  实际 404
  ✅ Flash/_ddmRecordMissPics(带 array 参数) → 404  实际 404

── B 组【守卫】:合法入口一个都不许被误伤 ──
  ✅ Index/index(前台首页) → 200  实际 200
  ✅ Login/adminlogin(后台登录页) → 200  实际 200
  ✅ Pubsite/verify(图形验证码) → 200  实际 200
  ✅ Admin/index(后台首页) → 200  实际 200
  ✅ Index/index 真的渲染了 HTML(非空壳 200)  body 31182 字节

── C 组【守卫】:这些路径仍然「没有」,且落点仍是 LegacyFallback ──
  ✅ Login/zzz_no_such_action → 404 且落点 Login->zzz_no_such_action  实际 404 diag="app\controller\Login->zzz_no_such_action"
  ✅ User/zzz_no_such_action → 404 且落点 User->zzz_no_such_action  实际 404 diag="app\controller\User->zzz_no_such_action"
  ✅ Flash/zzz_no_such_action → 404 且落点 Flash->zzz_no_such_action  实际 404 diag="app\controller\Flash->zzz_no_such_action"
  ✅ Order/zzz_no_such_action → 404 且落点 Order->zzz_no_such_action  实际 404 diag="app\controller\Order->zzz_no_such_action"
  ✅ Pay/zzz_no_such_action(薄墓碑类,仍 410) → 410  实际 410
  ✅ Pay/__call(薄墓碑类,改前 500) → 410  实际 410
  ✅ WxPay/__call(薄墓碑类) → 410  实际 410
  ✅ Oauth/auth_check_session(SEC-0013 已删除) → 404  实际 404
  ✅ Oauth/auth_check_session 响应体不含 session_key / openid  body={"error":"not_found"}
  ✅ Oauth/getsortServerName(零调用方死代码,已删) → 404  实际 404

── D 组【守卫】:改造前就安全的路径没被改坏 ──
  ✅ AI/_normalizeI2iSize(类无 __call,一直 404) → 404  实际 404
  ✅ Admin/_referralEmptyBuckets(Admin 集中闸) → 404  实际 404
  ✅ Verify/zzz_no_such_action(无 __call → 框架 404)  实际 404 diag="method not exists:app\controller\Verify->zzz_no_such_action()"

── E 组【守卫】:跨 controller app()->make() 不被误拒 ──
  ✅ action=initialize 的上下文里 make(PayV2) 仍成功  实际 "MAKE_OK"

── F 组【2026-09-12 收敛的核心判据】:不同来源的 404 对外逐字节相同 ──
  ❌ 浏览器(text/html) 车道:4 条不同来源 body 全等  LegacyFallback __call=c578522561fb91e9  框架 404=c578522561fb91e9  empty_controller=Error=c578522561fb91e9  Taro H5 产物缺失(静态路径)=3634ac923a95db59
  ❌ 机器(*/*) 车道:4 条不同来源 body 全等  LegacyFallback __call=d2dfdc9511fbeaa0  框架 404=d2dfdc9511fbeaa0  empty_controller=Error=d2dfdc9511fbeaa0  Taro H5 产物缺失(静态路径)=3634ac923a95db59
  ✅ 404 页不含「TP8」  页面 2666 字节
  ✅ 404 页不含「旧栈」  页面 2666 字节
  ✅ 404 页不含「retired」  页面 2666 字节
  ✅ 404 页不含「未迁移」  页面 2666 字节
  ✅ 404 页不含「think\」  页面 2666 字节
  ✅ 404 页不含「/var/www」  页面 2666 字节
  ❌ 404 页确实是给人看的页面(不是一行 JSON)  页面 2666 字节
  ❌ 404 响应带 Cache-Control: no-store  实际 ""

========================================================
PASS 43  FAIL 4