【问题标题】:convert multiple whitespaces value to tab value for password storing将多个空格值转换为制表符值以存储密码
【发布时间】:2023-04-10 18:24:02
【问题描述】:

我不知道;可能是看起来很疯狂或完全不专业的新手问题。但是,将四个空格转换为密码字段的制表符是一个不错的选择吗?

这就是我想要做的——每当用户在密码字段中输入密码时;我想修剪左右空格(如果有的话)!如果用户在字符串中间放置四个空格,则将其转换为 TAB 键值(反之亦然??),然后对值进行哈希处理..

我想提一下,密码字段将接受空格,并且密码字段不仅限于英文字符集。

这是好的做法吗?

【问题讨论】:

    标签: php passwords ascii


    【解决方案1】:

    修剪开头和结尾绝对是一个好习惯。

    但是,将空白字符转换为制表符是一个非常糟糕的主意。用户将如何登录?当他们在密码框中按下 Tab 按钮时,浏览器会将焦点从密码框移到页面上的下一个控件。他们无法在密码中输入 Tab!

    保留密码中间的空格。

    【讨论】:

    • 其实这只是一个例子。只是为了加强密码。用户每次将输入四个空格。只是我的登录脚本将这 4 个空格压缩为制表键值并存储它;或者另一个例子可能是用户使用字符'e';我将其更改为 '3'.. 每次我的登录检查获取 'e' 字符时,将其转换为 '3',然后比较来自 db 的散列值。
    • 但是(例如)如果用户将他们的密码设置为“hello”并且您将其转换为“h3110”,他们将如何知道他们的密码?
    【解决方案2】:

    大家可以讨论一下密码的修整,我个人认为是个好主意。

    虽然更改密码不会给您带来任何好处,甚至可能是有害的。假设您在存储密码之前正确地散列密码,您可以将更改视为散列算法的附加部分。无论您进行何种更改,密码的熵都无法通过算法增加,密码无法变得更强。另一方面,它可以降低熵。一个简单的例子:

    相同的密码,一次有 4 个空格,一次只有一个制表符将产生相同的哈希值。

    因此,如果您愿意,可以使用修剪过的密码,但不要更改密码的内容。

    【讨论】:

      【解决方案3】:

      很高兴您计划删除前导/尾随空格,但是我认为没有理由将这些空格更改为制表符,因为这只是加密它们之前的一个额外步骤。
      如果没有充分的理由放入某些东西,通常最好……不要放入 (编辑:我假设登录时会进行相同的检查)

      (ps:这类问题并不适合StackOverflow,因为它涉及个人意见)

      【讨论】:

      • 其实这只是一个例子。只是为了加强密码。用户每次将输入四个空格。只是我的登录脚本将这 4 个空格压缩为制表键值并存储它;或者另一个例子可能是用户使用字符'e';我将其更改为 '3'.. 每次我的登录检查获取 'e' 字符时,将其转换为 '3',然后比较来自 db 的散列值。
      • @oxvoxic 我假设(在注册和登录时都使用它),但是我会使用经过验证的加密方法(例如使用您的自定义密码作为额外的盐)以确保实际安全存储,并坚持为您的实际(未加密)密码删除前导/尾随空格,这看起来是一个很好的示例资源:crackstation.net/hashing-security.htm(没有使用过,但这些示例乍一看很好)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-12
      • 1970-01-01
      • 1970-01-01
      • 2014-01-07
      • 1970-01-01
      相关资源
      最近更新 更多