我正在尝试为我的代码添加一些安全功能,以防止直接对象引用攻击。每个用户都有一个项目列表。检索时,会为每个项目分配一个从1开始的编号,该编号将用于不同的功能(删除,更新等)。
因此,如果用户想要删除项目3,则会发送DELETE请求,如下所示: http://website.com/projects/3 。但是,如果他们碰巧再次发送请求,它将删除项目4.
我的修复是散列ID并发送它。因此,如果用户想要删除项目3,他们会发送 http://website.com/projects/3/hashOfId ,然后在删除项目之前根据项目ID对其进行检查。
这是安全的,还是有更好的选择?其他用户或当前用户能够同时删除和更改内容的能力非常重要。同样重要的是不要透露项目的ID。我还没能在网上找到其他方法的任何例子。
谢谢!