首页 > 解决方案 > 出于安全目的执行您自己的算法来打乱 ID 是否有任何速度优势?

问题描述

我计划实现我自己的非常简单的“散列”公式,为具有多个用户的应用程序添加一层身份验证。我目前的计划如下:

  1. 用户创建一个帐户,此时在后端生成一个 ID。ID 是通过一个公式计算的(比如说 ID * 57 + 8926 - 36 * 7,或者同样随机的)。然后我将新的用户 ID 和新的“散列”数字发送回前端,并将它们存储在localStorage.
  2. 用户尝试访问安全区域(假设是设置页面,以便他们可以更改自己的设置)。
  3. 我向后端发送两个值:它们的 ID 和散列数。我通过相同的公式运行 ID 以检查它是否与我收到的散列值匹配。如果检查通过,他们就可以进入。因此,如果有人尝试更改他们的 IDlocalStorage以访问其他用户的设置页面,那么他们实现这一目标的唯一方法就是猜测公式是什么。他们可以很容易地猜出用户 ID,但猜测相应的数字是 ID * 57 + 8926 - 36 * 7 的结果似乎不太可能。

我这样做是因为它比数据库查找实际散列值更快/更便宜......我想?使用包来创建某种主键/uuid而不是自己“散列”一个值并每次都进行数据库查找会更有意义吗?

我看到很多帖子说“不要自己动手”——这是绝对的吗?如果您正在处理相对不敏感的数据,是否值得放慢您的应用程序?

技术栈:FE 上的 React、BE 上的 Python、SQL db。

标签: hashauthorization

解决方案


推荐阅读