【问题标题】:Does having a space at the end constitute a valid password末尾有空格是否构成有效密码
【发布时间】:2011-01-17 09:13:42
【问题描述】:

末尾有空格是否构成有效密码

例如“ABCD”或“ABCD12”

如果我们在身份验证之前修剪密码输入(即“ABCD”将是修剪后的有效字符串)会不会很好

【问题讨论】:

  • 是的,如果您使用散列,则空格会更改散列字符串中的字节。因此,使用空格并对其进行散列处理会对字符串中的所有字节产生影响。
  • 空格是完全有效的 ASCII 字符,删除它会减少用户可用的熵。因此,修剪的唯一效果是稍微降低应用程序的安全性,而绝对没有任何回报。那是我的 2 美分。
  • GoogleMicrosoft 似乎正在修整密码。

标签: security validation passwords


【解决方案1】:

我同意那些说虽然它可以被视为有效字符,但我不会推荐它,因为它会增加可能的混乱并且不会真正增加任何价值。

在密码中使用空格是我只能猜测的事情,这在标准用户行为中很少发生并且不常见。因此,我认为如果您从密码中明确排除空格并在用户选择包含空格的密码时提醒用户,那会很好。我不会在不给用户反馈的情况下修改密码,以防他们故意选择空间并在之后无法登录时感到困惑。

公平地说,这只是对密码应该如何工作的直觉。我想不出为什么绝对禁止在密码中使用空格的原因。

【讨论】:

    【解决方案2】:

    密码末尾的空格是完全有效的,如果打印出来确实有助于保护它。为什么要限制用户选择的密码,它不能增加价值。

    【讨论】:

    • 我可能会修剪输入以避免混淆并给他们一个警告。
    【解决方案3】:

    我会说使用这样的密码可能是个坏主意,但随意更改他们输入的密码是一个更糟糕的主意。

    如果您的密码创建程序不允许密码以空格结尾,那么应该没问题。

    【讨论】:

      【解决方案4】:

      我不会认为空格是有效的密码字符。这不是通常会做的事情。所以在认证前修整就好了。

      【讨论】:

      • -1 空格是 ASCII 字符,因此是完全有效的。散列函数不会知道区别。
      【解决方案5】:

      我倾向于“默默地”修剪用户键入的几乎所有内容,因为空格通常不会显示在表单元素中。

      但是,对于密码字段,有一个 '*' 或等效项——所以即使是空格也是“可见的”;所以你不能默默地修剪输入。

      不过,我会认为开头或结尾有空格的密码无效,并要求用户修改它——但这可能是个人喜好问题。

      (考虑到用户在密码字段的开头或结尾输入空格是一种非常罕见的情况,但我不会指出不允许这样做的任何内容——直到用户实际这样做,当然:对于大多数用户来说,注册表已经太复杂了,所以在它发生之前不需要说那种小/罕见的事情)

      【讨论】:

      • 空格是完全有效的 ASCII 字符,删除它会减少用户可用的熵。因此,修剪的唯一效果是稍微降低应用程序的安全性,而绝对没有任何回报。那是我的 2 美分。
      • 我同意空格是有效字符这一事实,因此,我当然允许在密码中使用它;但不是在开头或结尾:在我看来,这意味着用户 出错的风险太大(例如,如果您通过电子邮件发送密码——是的,不好,但经常这样做——那里存在用户看不到开头或结尾的空格的风险,因为它是“不可见”字符) ;;;静默修剪适用于“文本内容”、“昵称”、“名字”等字段;当然不是密码:-)
      【解决方案6】:

      技术上是的 - 密码可以包含您想要的任何内容。但是,实际允许的内容取决于许多因素,包括散列算法、数据的存储方式等。

      如果您要修剪密码,那么您需要在用户输入数据时声明“无尾随空格”。

      【讨论】:

        猜你喜欢
        • 2014-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-28
        • 1970-01-01
        • 2018-12-04
        相关资源
        最近更新 更多