我需要在RESTApi中使用一个敏感值作为主标识符。
这将被确定为:DELETE /api/sometoken/<sensitiveid>
由于敏感数据不应该包含在URL中,我想知道最好的选择是什么
正文中的敏感ID
在正文中将id设置为json是否是一个有效的解决方案?这将导致具有主体{ "id": "<sensitiveid>" }
的DELETE /api/sometoken
我不确定这是否可以,因为DELETE
不会通过url直接引用实体。
滥用POST
或者,我可以使用POST
而不是DELETE
,并在正文或url中包含有关删除的信息。我想情况会更糟。
摘要ID
这个最复杂的解决方案可能使用不同的id。使用GET
时,查找订阅的所有敏感id,然后查找抽象idDELETE
。
哈希ID
我想做一个sha-256散列,并使用前n个字符来识别敏感令牌。
DELETE /api/sometoken/<hashofsensitiveid>
将机密放在请求的主体部分通常是个好主意,但GET和PUT请求可能会出现问题:HTTP DELETE请求是否允许实体主体?
如果它是敏感的,并且不应该出现在某些web服务器或流量日志中,那么只需将其作为一个标头即可。