安全测试发现未登录也能调用修改接口,换个编号就能操作他人记录。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,接口只校验了登录态,没有校验资源归属,也没有对身份做拦截。

「接口越权」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。

if (row.owner_id !== current_user.id && !current_user.is_admin) abort(403);

权限不要一口气开到最大,先加到够用再往上试,范围小才好收。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。

改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。

具体做法是,统一鉴权中间件;按资源归属校验;敏感操作记录操作人与来源。

最后用这个标准收尾,越权请求统一返回 403,合法请求的数据不受影响,日志中可追溯到来源。

作者 9823189