文章 13
生产上线前设计 Web、Mobile 与 API 安全
从基础理解身份认证、授权、令牌、会话、TLS、输入验证、速率限制、密钥、移动存储和安全日志。
常见误区
从系统使用者开始
隐藏按钮不等于 API 会拒绝操作
Web 与 Mobile 客户端由用户控制,请求可被查看、修改或绕过界面重放。服务器必须重新检查身份、授权、数据格式与业务规则。即使已登录,修改订单 ID 也不能读取他人订单。
阅读前术语
按实际作用解释技术语言
无需一次记住所有术语,可在阅读详情时返回对照。
- Authentication
- 通过密码、MFA、通行密钥或 SSO 证明身份。
- Authorization
- 判断某身份能否对特定资源执行操作。
- Session
- 服务器端登录状态,通常由随机 Cookie 标识。
- Access Token
- 提交给 API 的短期凭证,不是密码,不应永久保存。
- BOLA / IDOR
- API 检查登录却未检查调用者对目标对象 ID 的权限。
- Input Validation
- 使用输入前检查类型、大小、格式、范围与业务规则。
- CORS
- 控制哪些来源可读取响应的浏览器策略,不是身份认证,也不保护移动客户端。
- Threat Model
- 结构化识别资产、攻击者、攻击路径与缓解控制。
面向业务与一般用户的摘要
生产上线前设计 Web、Mobile 与 API 安全
身份认证确认调用者,授权判断其能否操作该对象,两者都需要。
移动应用与浏览器 JavaScript 无法向设备所有者永久隐藏公司密钥。
API 必须验证输入、限制滥用、执行对象级授权并只返回必要数据。
安全贯穿设计、评审、自动化测试、依赖扫描、渗透测试与监控。
动态扩展说明
深入阅读前,先了解各阶段如何连接
选择阶段,查看发生了什么、需要检查哪些证据,以及一个决策如何影响下一阶段。
步骤 01 / 06
01 / 定义信任边界
即使由我们开发,也要把浏览器和移动应用视为外部
客户端代码可被查看和修改,因此不能嵌入数据库密码、私有 API 密钥或只在界面执行关键规则。绘制数据流并审查每个信任边界。
深入说明
逐项说明如何应用于真实场景
每一部分都连接业务影响与 Tech Lead 需要检查的内容,包括示例、证据与限制。
01 / 定义信任边界
01即使由我们开发,也要把浏览器和移动应用视为外部
客户端代码可被查看和修改,因此不能嵌入数据库密码、私有 API 密钥或只在界面执行关键规则。绘制数据流并审查每个信任边界。
02 / 身份与访问
02登录成功只是开始,每个请求仍需资源授权
使用成熟身份服务与协议,高风险场景启用 MFA 并限制暴力破解。每个请求从服务器可信数据判断角色、租户和所有权;验证令牌或安全配置会话 Cookie。
BOLA 示例
GET /orders/8421
不能只检查令牌,应在调用者租户/所有权范围内查询,并避免泄露未授权对象是否存在。
03 / 输入与输出
03定义模式、大小与业务规则,只返回必要数据
使用明确模式、大小限制和业务规则验证请求;使用参数化查询与合适输出编码;不要直接返回完整数据库模型。上传应视为不可信,错误只返回安全代码与请求 ID。
04 / 控制滥用
04速率限制应考虑身份与操作成本,而不只是 IP
只按 IP 限制会影响共享网络且易绕过。应按账户、API key、资源、操作成本与总容量分层限制,并配置超时、请求大小、分页、队列与幂等。
05 / 客户端存储
05按威胁模型选择令牌存储,移动应用无法隐藏永久密钥
同源 Web 常适合 HttpOnly 安全会话 Cookie,同时仍需处理 CSRF 与 XSS。Mobile 凭证应放入 Keychain/Keystore 并保持短期。应用内置密钥可被发现,不能单独证明请求真实。
06 / 持续验证
06一次上线前审查跟不上持续变化的代码与漏洞
在设计阶段定义安全标准和滥用场景,评审敏感代码,并在流水线运行静态、依赖、密钥、容器与 IaC 扫描。结合 OWASP 标准进行动态测试和渗透测试,生产中持续监控与修补。
行动前检查清单
建立数据流与威胁模型
分离认证与授权
检查每个对象租户/所有权
全程 TLS
定义请求响应模式
限制上传与请求大小
多层速率限制
合理令牌/会话寿命
不在客户端放私密密钥
日志脱敏
扫描代码依赖密钥与 IaC
按 OWASP 标准测试
定义补丁 SLA 与事故负责人
参考资料
数字与示例用于建立讨论框架,决策前应以真实系统及其限制进行验证。
- 审阅者
- SIS Application Security
- 最后审阅
- 2026-07-17