API 安全清单

admin 2023年9月24日23:36:51评论10 views字数 1815阅读6分3秒阅读模式

验证

  • 不要使用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 软件静态扫描,包括供应商库和其他依赖项。

  • 为部署设计回滚解决方案。


原文始发于微信公众号(菜鸟小新):API 安全清单

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年9月24日23:36:51
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   API 安全清单https://cn-sec.com/archives/2064351.html

发表评论

匿名网友 填写信息