Skip to content

security(objectql): readonlyWhen 在多行 UPDATE(options.multi / REST updateMany)路径上服务端不强制——与静态 readonly 不一致 #3041

Description

@os-zhuang

背景

#3003 排查过程中发现的同族残留:#2948/#2957 把静态 readonly 的剥离补到了单条与多行两条 UPDATE 路径,但条件只读 readonlyWhen 从一开始就只在单条路径强制——多行路径完全不评估、不剥离。

定位(以当前 main 为准)

packages/objectql/src/engine.ts update:

暴露面

REST 直接暴露 POST /data/:object/updateMany(packages/rest/src/rest-server.ts:6076 → updateManyData → 引擎多行路径)。

攻击示意(按代码路径判断成立,待复现坐实):showcase_invoice.tax_rate 声明 readonlyWhen: record.status == 'paid'(paid 后锁税率)。单条 PATCH { tax_rate: 0 } 会被剥离;换成 POST /data/showcase_invoice/updateMany、where 精确命中同一条已 paid 记录、载荷 { tax_rate: 0 } → 写

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingsecurity

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions