相关疑难解决方法(0)

是否可以为不存在的资源而不是404返回HTTP 401以防止信息泄露?

受到思考的启发,同时查看" 资源可用但由于权限无法访问时纠正HTTP状态代码 "这一问题,我将使用相同的方案来说明我的假设问题.

想象一下,我正在建立一个拼车网络服务.

假设如下

GET /api/persons/angela/location
Run Code Online (Sandbox Code Playgroud)

检索用户"angela"的当前位置.只有angela本人和可能会选择她的司机应该能够知道她的位置,因此如果请求未通过相应用户的身份验证,则会返回401 Unauthorized响应.

还要考虑请求

GET /api/persons/john/location
Run Code Online (Sandbox Code Playgroud)

当没有用户名为john时已在系统中注册.没有john资源,更不用说john位置的资源了,所以这显然会返回404 Not Found.或者是吗?

如果我不想透露john是否在系统中注册了怎么办?

(也许用户名来自一小部分大学登录,校园内有一个非常激进的自行车小组,即使你在拼车,也会对车辆的使用情况非常暗淡?他们可以为每个用户提出URL请求,如果他们收到的是401而不是404,则推断出该用户是汽车用户)

为此请求返回401 Unauthorized是否有意义,即使资源不存在且服务器返回200的请求中没有可能提供的凭据集?

security rest http http-status-codes

35
推荐指数
2
解决办法
5251
查看次数

REST-API,无效DELETE的正确HTTP状态代码

我正在设计一个RESTful API,它使用HTTP状态代码和动词作为通信的关键组件.

在宗教层面上,它是在RESTafarian的狂热者一面.

决定HTTP状态代码的经验法则是此图或类似资源.

  • GET /api/documents/1- 401用户尚未登录
  • GET /api/documents/1- 200用户有权限
  • GET /api/documents/1- 403用户没有权限
  • DELETE /api/documents/1- 204用户有权限
  • DELETE /api/documents/1- 403用户没有权限
  • GET /api/documents/2- 404用户权限无关,资源不存在
  • DELETE /api/documents/2- 404用户权限无关,资源不存在
  • DELETE /api/documents/1- 404用户拥有权限,资源已被删除
  • DELETE /api/documents/1- 404用户没有权限,资源已被删除

目标:

  • 使用一致性
  • 不要通过错误公开私人信息
  • 正确使用客户端或中间层缓存的状态代码
  • 尽早失败,将查询保持在最低限度

在这种情况下,有很多不同的状态代码可供选择(404,403,410,405),在我的情况下,我在现有资源上使用403,如果它不是你的不清除缓存,而404是非所有非现有资源,以告诉客户擦除该数据.

但我不喜欢在不属于你的资源上从403切换到404.

我很想听听其他人如何解决这个用例,或者一般情况下你认为适合发送所有无效DELETE调用的状态代码,因为我认为这是最难以简洁的一个.

(整个互联网上的很多REST讨论和答案都只是"扔了400个糟糕的请求,无论如何都不关心",我没有需要快速修复或务实破解的问题.谢谢)

api permissions rest http http-error

14
推荐指数
2
解决办法
1万
查看次数

标签 统计

http ×2

rest ×2

api ×1

http-error ×1

http-status-codes ×1

permissions ×1

security ×1