首页 > 解决方案 > 在这种情况下如何保护更新操作

问题描述

我有一个应用程序,可以在用户回答几个问题后向他们推荐礼物。如果用户喜欢或不喜欢礼物,我需要向数据库发送更新请求以更新它的“喜欢”字段。用户无需签名即可喜欢/不喜欢问题。该应用程序是使用 Angular 构建的,并在后端使用 Express 来执行 CRUD 操作。

我的问题是,有什么方法可以以安全的方式完成此操作,以使用户无法打开开发工具并获取使他们能够发送重复请求或类似内容的信息?我可以在 Express 代码中更改什么吗?还是我需要更改安全规则?

标签: node.jsangularexpress

解决方案


Express 应该有一种方法来识别重复请求。用户 ID 或某种令牌应与请求一起使用。但我看到在这种情况下不需要用户登录。

每次向用户展示一些礼物时,您都可以生成一个临时令牌。此令牌应生成并临时保存在快递上,您可以将其与礼物数据一起发送。所以现在当你的前端发送喜欢/不喜欢的请求时,这个令牌将在请求中。

所以现在快递将执行以下步骤

  1. 检查临时令牌是否有效(它可以与保存的令牌匹配)
  2. 如果有效,那么它将更新数据库(喜欢/不喜欢)
  3. 成功更新后,它将删除该临时令牌。

所以现在,即使用户发送重复请求,它也会被快递拒绝,因为临时令牌将无效。

我希望它能解决你的问题。


推荐阅读