diff --git a/scripts/load_path.py b/scripts/load_path.py index aa3c774..34d53bd 100644 --- a/scripts/load_path.py +++ b/scripts/load_path.py @@ -62,15 +62,18 @@ PATHS_LOGINED = [ f"/{MOD}/api/instance/voucher_invalidate.dspy", ] -# CRUD 目录(框架生成,路径必须逐个注册) +# CRUD 生成目录(框架生成):只注册 index.ui + get_*.dspy(只读)。 +# ⚠ 生成的 add/update/delete_*.dspy 一律【不注册权限】——它们是裸 sor.C/U/D, +# 绕过全部业务校验(发券引擎原子占额/流水审计只读/org 隔离/状态守卫)。 +# 写操作只走 wwwroot/api/ 下有校验的端点(UI 的 editable URL 已指向它们)。 +# 文件虽被 xls2ui 生成(noedit 也生成),无权限行即 401(RBAC 默认拒绝)。 +# 2026-09-12 实测抓到的漏洞:统一注册四件套后 update/delete_voucher_usage_log.dspy +# 登录态直接 200 可篡改审计流水——精确权限是防线,生成端点是攻击面。 for alias, tbl in CRUD_DIRS.items(): PATHS_LOGINED += [ f"/{MOD}/{alias}", f"/{MOD}/{alias}/index.ui", f"/{MOD}/{alias}/get_{tbl}.dspy", - f"/{MOD}/{alias}/add_{tbl}.dspy", - f"/{MOD}/{alias}/update_{tbl}.dspy", - f"/{MOD}/{alias}/delete_{tbl}.dspy", ]