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:6076updateManyData → 引擎多行路径)。

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

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingsecurity

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions