ENGINEERING NOTE 11 / 50 · SMS
防止跨账号读取接码订单
知道订单号不能成为读取号码或短信的凭证。每次查询、取消和收码接口都必须校验归属。
本文由 OPEN RAMBO 发布。工程方案和伪代码用于说明设计,不是现有产品 API 文档;示例数字均为演示。
查询时限定归属
查询同时限定订单标识与已认证用户。只验证登录而不验证归属,仍会产生横向越权。导出和后台下载链接也需要同样规则,不能只审查界面。
避免泄露订单存在性
面向用户可统一返回不存在或不可访问,内部审计再区分。授权校验之前不能返回脱敏号码,部分数据也可能暴露其他客户活动。
覆盖全部操作
在测试环境建立两个隔离用户,尝试跨账号查询和取消。正常查询成功不能证明拒绝路径安全。新增适配器或导出格式后重新验证边界。
示意流程
order = find_one({"id": requested_id, "owner_id": session.user_id})
if order is None: return not_found()
return safe_order_view(order)如何验收
断言跨账号请求无法获得号码、验证码或取消结果,导出与重试入口也包含在内。