【问题标题】:Checking for Password within a password hint在密码提示中检查密码
【发布时间】:2017-11-13 14:50:34
【问题描述】:

我正在尝试纠正一些代码以防止用户在密码提示中输入他们的密码。我正在考虑防止用户在密码提示中包含三个连续的密码字符,即使它们被一个字符分隔,即 p-a-s-s-w-o-r-d。

我编写了下面的代码,但这可以防止密码提示,例如:密码:p123a21312swert1,这太严格了。这是因为我从密码提示中删除了所有不在密码中的字符。我四处搜索,但找不到任何相关内容。

var strippedPwdHint = new string(sValue.Where(c => sCompareTo.ToCharArray().Contains(c)).ToArray());

for (var i = 0; i < (strippedPwdHint.Length - 2); i++)
{
    if (!sCompareTo.Contains(strippedPwdHint.Substring(i, 3))) continue;
    retVal = new ValidationResult(ErrorMessage);
    break;
}

【问题讨论】:

  • 提示:提示包含密码中的所有字符,并且它们的顺序相同(或相反的顺序)。但我不会走得太远,规则往往只是让用户烦恼......
  • 是的,但我想所以我也打算防止被一个字符分隔,例如 p-a-s-s-w-o-r-d。
  • 我的意思是检查密码中的所有字符是否也在提示中以相同的顺序出现,无论中间有多少“分隔符”:p111a222s333s444w555o666r777d。有点极端的情况,但我想你明白我的意思。对于一个像样的密码(足够长和/或足够复杂),在提示中写入相同字符的机会应该非常接近于零。另一个注意事项:您说的是 characters 但您要检查的是 code units (字符串是 Unicode UTF-16 编码文本),它不一样。
  • 所以你是烦人的密码规则和密码提示规则背后的人!
  • 谢谢@AdrianoRepetti,非常有用的信息。 Alexandru,哈哈,我希望人们不要在提示中输入密码。

标签: c# asp.net-mvc passwords password-protection password-recovery


【解决方案1】:

在这种情况下,通常是“我能走多远?”因为你不可能涵盖所有情况。最重要的是,对一个人来说应该避免的显而易见的事情可能是如此晦涩难懂,对其他人来说并不重要。

虽然向前或向后检查提示与密码不匹配很简单,但显然要做更多的事情会很快变得复杂。

假设你有

string password = [Password]
string hint = [Password Hint]

简单地比较密码和提示将标记它们匹配的情况

bool invalid = password.Compare(hint);

要抓住相反的情况,你可以这样做

string reversed = new string(hint.ToCharArray().Reverse().ToArray());
bool invalid = password.Compare(reversed);

如果,正如你所建议的,你有这样的东西

string hint = "P-a-s-s-w-o-r-d";

你知道空格字符然后你可以替换它然后比较

bool invalid = password.Compare(hint.Replace("-",""));

但是,如果您不确定空格字符是什么,那就更复杂了,您必须小心不要将法律场景标记为无效。

假设您只想排除提示是密码+常规间距的情况,例如“P-a-s-s-w-o-r-d”一种方法可能是

  • 在提示中查找第一个和第二个密码字符之间的间距
  • 通过这些步骤中的提示,将提示与密码进行比较

其他问题包括

  • 空格字符重要吗?例如,与 P-a-s-s-w-o-r-d 相比,您如何处理 P-a-s-s!w!o!r!d?
  • 您关心多少个空格字符?例如,P 后跟 20 个字符然后 assword 有效吗?

话虽这么说,可能不值得太复杂,将提示与密码向前和向后比较可能就足够了。

【讨论】:

    猜你喜欢
    • 2012-01-03
    • 2018-05-19
    • 1970-01-01
    • 2012-11-20
    • 2017-01-01
    • 2011-03-20
    • 2011-04-25
    • 2012-11-26
    • 1970-01-01
    相关资源
    最近更新 更多