前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >API 安全清单

API 安全清单

原创
作者头像
Khan安全团队
发布2022-01-14 09:36:35
1.5K0
发布2022-01-14 09:36:35
举报
文章被收录于专栏:Khan安全团队

验证

  • 不要使用Basic Auth. 改为使用标准身份验证(例如JWT、OAuth)。
  • 不要在Authentication, token generation,中重新发明轮子password storage。使用标准。
  • 在登录中使用Max Retry和监禁功能。
  • 对所有敏感数据使用加密。

JWT(JSON 网络令牌)

  • 使用一个随机的复杂密钥 ( JWT Secret) 使暴力破解令牌变得非常困难。
  • 不要从标题中提取算法。在后端强制算法(HS256RS256)。
  • 使令牌到期 ( TTL, RTTL) 尽可能短。
  • 不要在 JWT 有效载荷中存储敏感数据,它可以很容易地被解码。

身份验证

  • 始终验证redirect_uri服务器端以仅允许列入白名单的 URL。
  • 始终尝试交换代码而不是令牌(不允许response_type=token)。
  • 使用state带有随机哈希的参数来防止 OAuth 身份验证过程中的 CSRF。
  • 定义默认范围,并验证每个应用程序的范围参数。

使用权

  • 限制请求(限制)以避免 DDoS / 暴力攻击。
  • 在服务器端使用 HTTPS 来避免 MITM(中间人攻击)。
  • 使用HSTS带有 SSL 的标头来避免 SSL Strip 攻击。
  • 对于私有 API,仅允许从列入白名单的 IP/主机进行访问。

输入

  • 根据操作使用正确的 HTTP 方法:GET (read)POST (create)PUT/PATCH (replace/update)和,如果请求的方法不适合请求的资源,则使用DELETE (to delete a record)响应。405 Method Not Allowed
  • 验证content-type请求接受标头(内容协商)以仅允许您支持的格式(例如application/xmlapplication/json等),406 Not Acceptable如果不匹配,则以响应响应。
  • 在您接受时验证content-type发布的数据(例如application/x-www-form-urlencodedmultipart/form-dataapplication/json等)。
  • 验证用户输入以避免常见漏洞(例如XSSSQL-InjectionRemote Code Execution等)。
  • 不要在 URL 中使用任何敏感数据( credentialsPasswordssecurity tokens或),而是使用标准的 Authorization 标头。API keys
  • 使用 API Gateway 服务来启用缓存、速率限制策略(例如QuotaSpike ArrestConcurrent Rate Limit)并动态部署 API 资源。

加工

  • 检查是否所有端点都受到身份验证的保护,以避免身份验证过程中断。
  • 应避免使用用户自己的资源 ID。使用/me/orders而不是/user/654321/orders.
  • 不要自动增加 ID。改为使用UUID
  • 如果您正在解析 XML 文件,请确保未启用实体解析以避免XXE(XML 外部实体攻击)。
  • 如果您正在解析 XML 文件,请确保未启用实体扩展以避免Billion Laughs/XML bomb通过指数实体扩展攻击。
  • 使用 CDN 进行文件上传。
  • 如果您正在处理大量数据,请尽可能使用Workers和Queues在后台处理并快速返回响应以避免HTTP阻塞。
  • 不要忘记关闭调试模式。

输出

  • 发送X-Content-Type-Options: nosniff标头。
  • 发送X-Frame-Options: deny标头。
  • 发送Content-Security-Policy: default-src 'none'标头。
  • 删除指纹标头 - X-Powered-ByServerX-AspNet-Version等。
  • 力求content-type你的回应。如果你返回application/json,那么你的content-type回应是application/json
  • 不要返回敏感数据,如credentialsPasswordssecurity tokens
  • 根据操作完成返回正确的状态码。(例如200 OK, 400 Bad Request, 401 Unauthorized,405 Method Not Allowed等)。

持续集成和光盘

  • 使用单元/集成测试覆盖率审核您的设计和实现。
  • 使用代码审查流程并忽略自我批准。
  • 确保在推送到生产之前,您的服务的所有组件都由 AV 软件静态扫描,包括供应商库和其他依赖项。
  • 为部署设计回滚解决方案。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 验证
    • JWT(JSON 网络令牌)
      • 身份验证
      • 使用权
      • 输入
      • 加工
      • 输出
      • 持续集成和光盘
      相关产品与服务
      多因子身份认证
      多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档