API网关设计

非原创

API所需安全功能

身份和访问控制

  • 认证

HTTP Basic:
API Key:客户端传递(参数+Key+Sign)到服务端(使用参数计算Sign,比较两个Sign)
OAuth:最受欢迎的网关验证协议
JWT:
  • 授权

RBAC:基于角色的访问控制
ABAC:基于属性的访问控制

通信安全

威胁防护

  • 输入控制

  • 消息限制

  • SQL注入

  • JSON防护

  • XML防护

  • 输出控制

日志记录

黑白名单

API监控

API限速

API接口调用方式

HTTP+请求签名机制

  • 特点

所有携带接口信息的HTTP头内容都必须参与签名计算

不同HTTP头内容也需要按照一定规则排序

  • 优点

  • 缺点

签名算法太复杂,易用性贼差

响应包可被窃听、伪造、需要防范Replay(重放)攻击

HTTP+参数签名机制

  • 特点

只有GET和POST参数的内容需要参与签名计算

  • 优点

签名算法想对简单,易用性有较大提升

  • 缺点

响应包可被窃听、伪造、需要防范Replay(重放)攻击

HTTPS+访问令牌机制

  • 特点

无需签名计算

依靠传输层加密和访问令牌的不可伪造性保证安全

  • 优点

相对安全,无法通过网络抓包方式窃听或伪造数据

易用性高,无需再为签名头疼,无需考虑Replay攻击

  • 缺点

安全性建立在用户不被中间人攻击和令牌不被泄漏的情况下

更好的方案

  • 牺牲易用性换取安全性

HTTPS+内容签名机制

HTTPS+内容加密机制

  • 降低令牌泄漏带来的风险

为开发者提供绑定服务器IP列表、限制refer等支持

针对不同应用场景颁发不同有效期等访问令牌

针对不同安全级别的数据授权颁发不同有效期的访问令牌

为开发者和用户提供令牌作废支持

关于认证

JWT

JWT:Json Web Token 跨域认证解决方案

  • JWT数据格式

以一个很长的字符串代表,中间用.分割成三个部分

关于Base64URL

  • JWT特点

OAuth

参考资料

网关在API安全中的作用

REST API 安全设计指南

HTTP API接口安全设计

开发安全的 API 所需要核对的清单

移动APP网关安全设计

JSON Web Token 入门教程

理解OAuth2.0

最后更新于

这有帮助吗?