【问题标题】:Does showing hashes compromise security? php显示哈希是否会损害安全性? php
【发布时间】:2018-03-01 20:22:45
【问题描述】:

向用户显示一次性密码是否安全,该密码是某种哈希值,其创建方式与常规密码的哈希值相同,还是会危及密码破解的安全性?
示例一次密码哈希显示给用户:$2y$10$bIta4cgF3o4K.7u2iry3S.iQCaUJ1Rb9uP2eu.618bjuYmONxJTP6
我不想让用户知道我是如何创建一次性密码的,因此我想给他一个哈希值。

【问题讨论】:

  • 您是否有理由向他们展示哈希值?
  • 你为什么要把它给他们?为什么?为什么?
  • 就像杰伊说的,为什么?为什么?

标签: php security hash


【解决方案1】:

我同意其他人的观点,他们问您为什么需要这样做,但是将其转移到您的问题上,是的,这是一个坏主意。

首先,根据您提供的密码,我可以告诉您正在使用某种形式的 bcrypt。诚然,bcrypt 是一种非常强大的哈希算法,使用 GPU 和 hashcat 等工具不容易破解,但是您仍然通过将其发送给用户来披露实现细节。

此外,如果您非常担心用户知道您生成的一次性密码,这告诉我它不是随机的。如果它不是随机的,那么即使有人知道你的一次性密码约定,即使是像 bcrypt 这样非常强大的算法也无法拯救你。

最后,我不完全确定您提出的解决方案将如何工作,因为如果您向用户发送哈希,他们将输入哈希作为他们的密码。然后,标准登录过程将对他们输入的内容进行哈希处理(在这种情况下是您生成的一次性密码的哈希值)并将其与存储在数据库中的内容进行比较。太复杂了。

我建议只生成一个 10-12 个字符长的随机一次性密码,然后通过之前验证过的渠道(即验证过的电子邮件地址或手机号码)将其发送给用户。

【讨论】:

    猜你喜欢
    • 2013-09-11
    • 1970-01-01
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多