【发布时间】: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>
【问题讨论】:
-
可以在DELETE请求的实体正文中发送敏感id:stackoverflow.com/a/10015724/1802536
-
在你的 URL 中使用一个不敏感的 id 听起来是一个聪明的方法来处理这个问题。哈希听起来特别聪明。