【问题标题】:REST: Best way to deal with secrets in DELETEREST:在 DELETE 中处理秘密的最佳方式
【发布时间】:2021-12-30 21:27:15
【问题描述】:

我需要在 REST Api 中使用敏感值作为主要标识符。

这将被标识为: DELETE /api/sometoken/<sensitiveid>

由于敏感数据不应包含在 URL 中,我想知道最好的选择是什么。

正文中的敏感 ID

在正文中将 id 设置为 json 会是一个有效的解决方案吗? 这将导致 DELETE /api/sometoken 与正文 { "id": "<sensitiveid>" }

我不确定这是否可以,因为DELETE 不直接通过 url 引用实体。

滥用 POST

或者,我可以使用POST 代替DELETE,并在正文或网址中包含有关删除的信息。我想这会更糟。

抽象 ID

这个最复杂的解决方案可能会使用不同的 ID。 使用GET 时,查找我订阅的所有敏感ID,然后查找DELETE 抽象ID。

散列 ID

我想制作一个 sha-256 哈希并取前 n 个字符来标识敏感令牌。

DELETE /api/sometoken/<hashofsensitiveid>

【问题讨论】:

标签: rest security


【解决方案1】:

将秘密放在请求的正文部分通常是个好主意,但 GET 和 PUT 请求可能会出现问题:Is an entity body allowed for an HTTP DELETE request?

如果它是敏感的并且不应出现在某些 Web 服务器或流量日志中 - 将其简单地设置为标题。

【讨论】:

  • 上面的答案是错误的,你不应该使用带有DELETE请求的正文。
猜你喜欢
  • 2016-11-10
  • 2020-01-09
  • 2017-05-23
  • 1970-01-01
  • 2013-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多