Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 你有什么理由不';为了安全起见,你不能执行自己的算法来扰乱ID吗?_Javascript_Python_Sql_Security_Backend - Fatal编程技术网

Javascript 你有什么理由不';为了安全起见,你不能执行自己的算法来扰乱ID吗?

Javascript 你有什么理由不';为了安全起见,你不能执行自己的算法来扰乱ID吗?,javascript,python,sql,security,backend,Javascript,Python,Sql,Security,Backend,我计划实现我自己的非常简单的“哈希”公式,为一个有多个用户的应用程序增加一层安全性。我目前的计划如下: 用户创建一个在后端生成ID的帐户。ID通过一个公式运行(比如ID*57+8926-36*7,或者其他同样随机的东西)。然后我将新的用户ID和新的“哈希”数字发送回前端,并将它们存储在localStorage中 用户尝试访问一个安全区域(比如设置页面,这样他们就可以更改自己的设置) 我向后端发送两个值:它们的ID和散列数。我通过相同的公式运行ID,检查它是否与我收到的哈希值匹配。如果检查通过,他

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

  • 用户创建一个在后端生成ID的帐户。ID通过一个公式运行(比如ID*57+8926-36*7,或者其他同样随机的东西)。然后我将新的用户ID和新的“哈希”数字发送回前端,并将它们存储在
    localStorage
  • 用户尝试访问一个安全区域(比如设置页面,这样他们就可以更改自己的设置)
  • 我向后端发送两个值:它们的ID和散列数。我通过相同的公式运行ID,检查它是否与我收到的哈希值匹配。如果检查通过,他们可以进去。因此,如果有人试图(比如)在
    localStorage
    中更改自己的ID以访问另一个用户的设置页面,那么他们实现这一目标的唯一方法就是猜测公式是什么。他们可以很容易地猜出一个用户ID,但是猜出相应的数字是ID*57+8926-36*7的结果似乎不太可能
  • 我这样做是因为它比实际哈希值的db查找更快/更便宜。。。我想?使用包来创建某种主键/uuid,而不是“散列”我自己的值并每次执行db查找,这样做更有意义吗


    技术堆栈:在FE上进行反应,在BE上进行Python,SQL db。

    这篇文章中缺少的两个实哈希属性是

    • 输入的简单变化会导致输出的巨大变化
    • 所有哈希都具有相同的长度
    如果用户不知何故知道自己的id和散列,这可能是一个问题。 使用你自己制作的散列,我可以通过反向生成散列来轻松找到随机其他用户的散列


    此函数缺少的两个实数哈希属性是

    • 输入的简单变化会导致输出的巨大变化
    • 所有哈希都具有相同的长度
    如果用户不知何故知道自己的id和散列,这可能是一个问题。 使用你自己制作的散列,我可以通过反向生成散列来轻松找到随机其他用户的散列

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

    是的。原因是,每当一个非密码学家尝试开发自己的算法时,他们总是会陷入大量的陷阱,这使得算法的安全性几乎毫无用处

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

    我这样做是因为它比实际哈希值的db查找更快/更便宜

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

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

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

    是的。原因是,每当一个非密码学家尝试开发自己的算法时,他们总是会陷入大量的陷阱,这使得算法的安全性几乎毫无用处

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

    我这样做是因为它比实际哈希值的db查找更快/更便宜

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


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

    这个问题可能更适合。好建议,我将交叉发布,谢谢!对于后续的任何人来说,Stack Exchange Info Sec线程就在这里:看起来您正试图重新创建一个经过身份验证的会话方案。为什么不使用正确的会话处理?请不要在StackExchange上交叉张贴此问题可能更适合。好的建议,我将交叉张贴,谢谢!对于后续的任何人来说,Stack Exchange Info Sec线程就在这里:看起来您正试图重新创建一个经过身份验证的会话方案。为什么不使用适当的会话处理?请不要在StackExchangeThese上交叉张贴,因为这两个属性在这里是不相关的。事实上,普通MD5在这里是无用的,因为任何能够猜到有效ID的攻击者也可以轻松计算其MD5。在这种情况下需要的是ID的不可预测性,这可以通过为用户分配一个随机的128位uuid来实现。这两个属性在这里是无关的。事实上,普通MD5在这里是无用的,因为任何能够猜到有效ID的攻击者也可以轻松计算其MD5。这种情况下需要的是ID的不可预测性,这可以通过为用户分配一个随机的128位uuid来实现。