当前位置: 首页 > news >正文

AIP-211 授权检查

编号211
原文链接AIP-211: Authorization checks
状态批准
创建日期2021-02-24
更新日期2021-02-24

大多数操作,无论读或写,都需要授权:获得执行用户请求的操作的权限。此外,向 未授权 用户提供了多少信息也非常重要,因为信息泄露也是安全问题。

指南

服务 必须 在验证请求之前检查授权,确保API界面的安全性和一致的用户体验。一个操作 可以 需要多个权限或前提条件才获得授权。

如果请求因某种原因无法通过授权检查,服务 必须 返回 PERMISSION_DENIED 错误,相应的错误信息 应当 类似于:“权限 {p} 在资源 {r} 上被拒绝(资源可能不存在)。”这避免了泄露资源是否存的信息。

如果由于资源不存在而无法确定授权,服务 应当 检查在上级资源上读取下级资源的授权。如果通过授权检查,返回 NOT_FOUND 。

多重操作

服务可能遇到这种情况:有两个操作分别需要不同的权限,执行任何一个操作都会暴露资源的存在性,而用户只拥有其中一个操作的权限。

此时,服务 应当 只检查与被调用操作有关的授权, 不应 尝试“帮助”检查其他权限。这可能暴露资源的存在,这样的算法难以实现,很容易意外泄露信息。

假设有以下场景:

  • 用户无法访问集合中的某个资源。
  • 用户 确实 有权限在集合中创建资源,并且集合允许用户设定资源标识(这意味着标识冲突引发的资源创建失败暴露了资源的存在)。

此时,获取或创建方法 应当 只检查和 自身 有关的权限,确定返回哪个错误,而非检查对方的权限。

理由

RFC 7231 §6.5.3指出,不希望暴露资源存在性的情况下,服务可以使用 404 Not Found 代替 403 Forbidden 。本AIP主张使用 PERMISSION_DENIED (对应于HTTP的 403 Forbidden )。我们采取这一立场的理由如下:

  • “在没有授权的时候用 404 Not Found 替代 403 Forbidden ”的做法违反直觉,增加了故障排查难度。
    • 服务 可以 返回关于缺少授权的信息,缓解这个问题,同时仍使用 404 Not Found 状态码。但这传递了混淆的信息。
  • 虽然 403 Forbidden 本质上是需要手动处理的错误,而 404 Not Found 通常是应用程序可以处理的有效应答(例如“获取或创建”)。将其作为权限错误剥夺了应用程序的优势。
  • RFC 7231 §6.5.4指出客户端可以缓存 404 Not Found 结果,但权限错误通常不能缓存。根据条件主动发送缓存控制指令可以缓解问题,但违背了缓存机制的目的。
  • 这里的指南与大部分现实世界的授权系统更加接近。

修订记录

  • 2021-05-11 添加更详细的“理由”部分。
http://www.dtcms.com/a/107605.html

相关文章:

  • transformer结构原理
  • Unity开发——Destory延迟销毁导致异常的处理
  • 关于 数据库 UNION 和 UNION ALL 的使用,以及 分库分表环境下多表数据组合后的排序和分页问题的解决方案 的详细说明,并以表格总结关键内容
  • 【黑科技护航安全】分布式光纤测温:让隐患无处可藏
  • Vite 内联 CSS 和 JS 的解决方案
  • 机器学习的一百个概念(7)独热编码
  • 大文件上传源码,支持单个大文件与多个大文件
  • 【三层架构有哪些?】
  • 函数fcntl(File Control)
  • spring AOP 事务 过滤器(Filter)与拦截器(Interceptor)
  • java项目分享-分布式电商项目附软件链接
  • C语言变长数组(VLA)详解:灵活处理动态数据的利器
  • 【大模型系列篇】大模型基建工程:使用 FastAPI 构建 MCP 服务器
  • 智能语音识别工具开发手记
  • Java 枚举类 Key-Value 映射的几种实现方式及最佳实践
  • 【Framework-Client系列】UIGenerate介绍
  • MTK AWB 色温曲线的进一步猜想
  • 时尚优雅奢华品牌包装徽标设计衬线英文字体安装包 Kagea – Luxury Women Ligature Font
  • 司南评测集社区 3 月上新一览!
  • 启服云商标管理软件:律师事务所的高效之选
  • 数据结构优化DP总结
  • SvelteKit 最新中文文档教程(17)—— 仅服务端模块和快照
  • 智能配电箱:重塑未来电力管理的核心枢纽
  • 大模型显卡网络
  • 爱普生RX8901CE实时时钟模块赋能智能监控系统的精准
  • 某某航空 同盾 blackbox 补环境
  • 华为云数据库服务实践
  • 如何解决跨系统审批慢、人工干预多的问题?
  • es自定义ik分词器中文词库实现热更新
  • Elasticsearch 证书问题解决