出于安全目的,您是否有理由不执行自己的算法来打乱 ID?

2024-05-11

我计划实现我自己的非常简单的“哈希”公式,为具有多个用户的应用程序添加一层安全性。我目前的计划如下:

  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 数据库。


我看到很多帖子都说“不要自己动手”——这是绝对的吗?

是的。原因是,每当非密码学家尝试开发自己的算法时,他们总是会陷入许多坑,从而使算法的安全性几乎毫无用处。

例如,给定两个连续的 ID 和“哈希”对,您的特定方案可能会被轻易破坏。 (这是一个简单的算术数列,给定两个连续值推导算术数列的公式是六年级左右的数学。)

我这样做是因为它比数据库查找实际的散列值更快/更便宜......

性能差异可能可以忽略不计。别担心。

如果信息不是特别敏感,只需为每个用户分配一个随机生成的 128 位数字即可。有人猜测有效用户号码的机会几乎为零。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

出于安全目的,您是否有理由不执行自己的算法来打乱 ID? 的相关文章

随机推荐

  • 用空字符串替换状态:Javascript

    我有这个网址 website com con blog true 我在 javascript 中所做的是 if getURLparams blog RandomFunction change the url window history r
  • 将 Sandcastle 帮助文件生成器输出(网站)转换为 MediaWiki 格式

    我需要 转换我的 Sandcastle 帮助文件 Web 生成器 SHFB 输出 站点 HTML 转媒体 wiki 格式 找到一种方法来转移 包含 直接将转换后的页面转换为 我们已经建立了 MediaWiki 有任何想法吗 我们的网站中有超
  • Kotlin JavaScript 到 TypeScript 定义文件

    我已经找到了ts2kt 库 https github com Kotlin ts2kt这将从任意位置创建 Kotlin 头文件 d ts文件 但是 我想朝相反的方向走 我想构建一个可以编译为 JavaScript 的 Kotlin 库 但我
  • 检查两个函数或成员函数指针的签名是否相等

    我编写了一些代码来检查自由函数的签名是否等于成员函数的签名等 它比较提取的返回类型和函数参数 include
  • 将代码从 htaccess 重写为 nginx 配置?

    我在将 htaccess 文件中的重写代码实现到 nginx 配置中时遇到问题 我已经尝试过生成器 http winnginx com htaccess http winginx com htaccess用于生成我的重写 代码 我的ngin
  • 表达式的类型必须是数组类型,但它解析为浮点数

    当我编写 Java 代码时 我遇到了困难 我觉得我不知何故把这个概念弄乱了 就像我不确定这一点 void setScore float sco sco score public void setScore float sco int id
  • ASP.NET MVC 动作过滤器

    有谁知道即使在 CATCH 块中 ActionFilterAttribute 类的 OnResultExecuted 方法是否也会执行 ie CookiesActions public ActionResult Login Usuarios
  • Python:如何对数组 X 进行排序,但对 Y 进行相同的相对排序?

    例如 X 5 6 2 3 1 Y 7 2 3 4 6 我对X进行排序 X 1 2 3 5 6 但我希望对 Y 应用相同的相对排序 以便数字保持与以前相同的相对位置 Y 6 3 4 7 2 我希望这是有道理的 通常 你会做一个zip sort
  • 图像未显示在从 HTML 创建的 PDF 上

    我想动态创建 PDF 这意味着我将从 Google Drive 获取文件 然后将它们放入 HTML 代码中 并尝试从中创建 PDF 一切工作正常 除了图像没有显示 我现在正在做的是 从 HTML 字符串创建 HtmlOutput 获取该 H
  • 从堆栈弹出后重新出现 UITableViewCellSeperator 的问题

    我有一个将动态数据加载到表视图中的应用程序 当只有一项时 因此只有一个单元格 为了确保 UITableViewCellSeperator 没有显示这一项 我使用以下代码 CGFloat tableView UITableView table
  • Go中如何自定义http.Client或http.Transport超时重试?

    我想实现一个自定义http Transport对于标准http Client 如果客户端超时 它将自动重试 附 由于某种原因 习俗http Transport is a 一定有 我已经查过了hashcorp go retryablehttp
  • 单向关系和双向关系的区别

    我想知道这两个词是什么意思 我遇到他们是在教义的文档 http www doctrine project org documentation manual 2 0 en association mapping 但我不明白他们的意思 这与常见
  • 应用程序终止时处理通知(iOS)

    我正在开发接收通知的应用程序 使用苹果推送通知 我正在存储这些通知并在一个控制器中显示为列表 据我了解 每当收到通知时都会调用 didReceiveRemoteNotification 当应用程序位于前台和后台时 我可以通过 didRece
  • Uber API 不允许来自本地主机的请求

    当我使用 Uber API 和 localhost 时 我收到以下错误 请求的资源上不存在 Access Control Allow Origin 标头 起源 http 本地主机 8080 http localhost 8080 因此不允许
  • 在 O(n) 时间内找到 n x n 矩阵中的局部最小值

    所以 这不是我的家庭作业问题 而是取自 coursera 算法和数据结构课程的未评分作业 现已完成 You are given an n by n grid of distinct numbers A number is a local m
  • 什么是“多重”启动模式?

    On http developer android com guide topics manifest activity element html http developer android com guide topics manife
  • 如何从 SD 卡中删除文件

    我正在创建一个文件作为电子邮件的附件发送 现在我想在发送电子邮件后删除图像 有没有办法删除文件 我努力了myFile delete 但它没有删除该文件 我在 Android 上使用此代码 因此编程语言是 Java 使用通常的 Android
  • 列表到优先队列

    我有一个 C 大学编程项目 分为两个部分 在开始第二部分时应该使用priority queues hash tables and BST s 我 至少 在优先级队列方面遇到了麻烦 因为它迫使我自己重做第一部分中已经实现的许多代码 该项目是关
  • 使用条件在 pandas 数据框中生成新列

    我有一个 pandas 数据框 如下所示 portion used 0 1 1 0 1 2 0 3 2 3 0 0 3 4 0 8 我想根据以下内容创建一个新专栏used列 以便df看起来像这样 portion used alert 0 1
  • 出于安全目的,您是否有理由不执行自己的算法来打乱 ID?

    我计划实现我自己的非常简单的 哈希 公式 为具有多个用户的应用程序添加一层安全性 我目前的计划如下 用户创建一个帐户 此时后端会生成一个 ID ID 通过公式运行 假设 ID 57 8926 36 7 或同样随机的东西 然后 我将新的用户