API安全需要同时判断调用者是谁、能访问哪些对象以及能消耗多少资源。网站或小程序隐藏按钮不能保护后端接口,知道订单编号也不代表有权查看订单。

每次请求检查身份和对象

服务端验证凭据与有效状态,再核对业务对象归属、角色和操作权限。不要直接信任客户端传来的用户编号或权限字段;登录成功也不等于可以读取其他人的记录。

参数和输出都有边界

限定字段、类型、长度、分页和一次返回的数量。避免把数据库记录全部返回再让前端隐藏敏感字段;错误响应不暴露凭据或内部调用细节。

限流与防垃圾结合业务

对登录、表单、搜索和昂贵计算分别限制,考虑账号、来源和接口维度。验证码、垃圾识别和幂等控制各有作用,不能用其中一个替代全部措施。正常共享网络用户应有恢复路径。

平台接入不免除验证

小程序平台身份在服务端确认,绑定业务账号时验证归属。测试凭据过期、重复回调、权限变化和越权对象访问。上线后监控失败类型,而不把所有401都归为平台故障。

参考资料

OWASP REST安全

对象授权与登录验证分开测试

已登录用户也可能访问他人的订单、附件或留言,接口需检查每个对象归属。

测试替换编号与跨用户请求,限流按成本和业务设计,不能只检查有没有有效token。

例如用户换一个订单编号能读到他人订单,登录验证成功也不能证明对象授权有效。