【问题标题】:How to secure the update operation in this scenario在这种情况下如何保护更新操作
【发布时间】:2021-08-13 08:34:03
【问题描述】:
我有一个应用程序,它会在用户回答几个问题后向他们推荐礼物。如果用户喜欢或不喜欢礼物,我需要向数据库发送更新请求以更新它的“喜欢”字段。用户无需签名即可喜欢/不喜欢问题。该应用程序是使用 Angular 构建的,并在后端使用 Express 来执行 CRUD 操作。
我的问题是,有什么方法可以以安全的方式完成此操作,以便用户无法打开开发工具并获取使他们能够发送重复请求或类似内容的信息?我可以在 Express 代码中更改什么吗?还是我需要更改安全规则?
【问题讨论】:
标签:
node.js
angular
express
【解决方案1】:
Express 应该有一种方法来识别重复的请求。用户 ID 或某种令牌应与请求一起使用。但我看到在这种情况下不需要用户登录。
您可以在每次向用户展示一些礼物时生成一个临时令牌。此令牌应生成并临时保存在快递上,您可以将其与礼物数据一起发送。所以现在当你的前端发送喜欢/不喜欢的请求时,这个令牌将在请求中。
所以现在快递会做以下步骤
- 检查临时令牌是否有效(可以与保存的令牌匹配)
- 如果有效则更新数据库(喜欢/不喜欢)
- 成功更新后,它将删除该临时令牌。
所以现在,即使用户发送重复请求,它也会被快递拒绝,因为临时令牌将无效。
希望它能解决你的问题。