【问题标题】:How to model permissions for missing resources?如何为丢失的资源建模权限?
【发布时间】:2014-10-27 11:45:13
【问题描述】:

我有以下 REST 资源:

  • /companies 返回公司列表
  • /companies/{id} 返回公司状态
  • /companies/{id}/departments 返回公司所有部门
  • /employee/{id}/departments 返回员工所在的部门
  • /departments/{id} 返回部门状态

需要注意的是,一个部门知道其关联公司和员工,但其 URI 不包含此信息。如果该部门不存在,则无法知道它曾经与哪个公司/员工相关联(或者该资源是否曾经存在过)。为了争论起见,您应该假设部门 URI 方案不太可能改变(说来话长)。

/companies 资源具有关联的query 权限令牌。当客户引用不存在的公司/companies/{id} 时,我会检查他们是否有权访问query。如果他们这样做,我返回HTTP 404 ("Not Found"),否则我返回HTTP 403 ("Forbidden")

到目前为止一切顺利。当客户端引用不存在的/departments/{id} 资源时,就会出现问题。由于部门不存在,我无法弄清楚它与哪个公司和query 权限令牌相关联。

看来我们又回到了经典usability/security tradeoff

  • 通过假设每个人都有权知道资源是否存在来提高可用性(返回明确的错误消息,指出出现了什么问题),或者
  • 如果缺少资源或权限被拒绝,则通过返回模糊的错误代码来提高安全性(返回模糊的错误消息以隐藏资源是否存在或是否定义了权限)。

还有其他方法吗?

【问题讨论】:

    标签: security rest permissions


    【解决方案1】:

    我最终放弃了query 权限。任何人只要知道它的地址就可以查找任何资源。意思是,我不会试图阻止未经授权的用户发现资源是否存在。

    【讨论】:

      猜你喜欢
      • 2018-01-09
      • 2021-10-25
      • 2021-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多