实时密码规则检查器?

时间:2011-05-12 14:48:56

标签: javascript ajax

我正在为我的学校做一些初步调查(我作为学生在IT部门工作)。这里的学生必须每6个月更改一次密码,其中许多人都很难实施强制执行的(许多)密码规则。也就是说,他们经常不得不多次尝试设置新密码。

规则是:

  • 必须是8个字符或更多 长度
  • 必须包含4种类型中的3种 人物(大写,小写, 号码,特殊字符)
  • 不得包含用户的第一个, 姓氏或中间名
  • 不得包含用户的用户名
  • 不得匹配使用的任何密码 前
  • 用户必须输入密码两次,并且 键入的密码必须完全匹配

我有几个问题:

  • 是否可以创建基于Web的 密码检查器提供 用户输入的实时反馈 在他们的新密码?我是 想象一边的清单 绿色复选标记的网页 密码满足时激活 更多标准。
  • 是否可以执行此操作 安全和完整地检查 客户端?
  • 从哪里开始这样的任务? 有没有可以推荐的指南?

请注意,我不是网络开发人员。此外,请留下任何诙谐的评论,例如“更改密码政策”或“他们只是愚蠢的用户”。

5 个答案:

答案 0 :(得分:5)

  

是否可以创建基于Web的密码检查程序,在用户输入新密码时提供实时反馈?我正在想象一个网页一侧的清单,其中绿色复选标记被激活,因为密码符合更多标准。

  

是否可以安全地执行此检查

当指示灯变为绿色时,它会显示有关满足要求的密码位置的信息。这会将有关密码的数据泄漏给任何可以看到屏幕的人。

  

完全是客户端?

  

从哪里开始这样的任务?

HTML文档中的规则列表,每个规则旁边都有一个FAIL图像。 JS中规则的程序版本。然后在密码输入上的每个按键事件的循环中依次测试每个规则,并根据是否遵循规则交换PASS和FAIL图像。

您需要使用XMLHttpRequest对象访问服务器,以检查之前是否使用过密码。确保你只存储哈希和盐渍密码。

  

请注意,我不是网络开发人员。

然后我建议你得到一个或成为一个。

  

此外,请留下任何诙谐的评论,例如"更改密码政策"

很好,把机智放在一边,坚持严肃的问题:

如果人们在提出符合策略的密码时遇到问题,那么他们就会在记住这些密码时遇到问题。这将导致人们不得不重新设置(IT部门需要更多工作)以及将其写下来的人员(这可能会比使用更容易猜测/暴力的密码更不安全)。 / p>

答案 1 :(得分:2)

您指定的大部分规则都可以使用javascript实时检查,更具体地说是使用正则表达式。之前检查密码是否已在服务器端进行,以确保安全。

答案 2 :(得分:1)

  

是否可以创建基于Web的密码检查程序,在用户输入新密码时提供实时反馈?我正在想象一个网页一侧的清单,其中绿色复选标记被激活,因为密码符合更多标准。

是的,但你需要知道一些javascript才能做到。

  

是否可以安全地完全执行此检查并完全在客户端执行?

不,是的,或者是,不是,但不是两者兼而有之。您可以完全在客户端进行检查(除了检查以前需要数据库访问的密码)。但是,在客户端,没有任何东西是永远安全的。您在客户端执行的任何操作都应视为对用户的帮助。必须始终在服务器上进行所有验证。

我不想成为一个聪明的人并告诉你更改密码策略,这样做是因为验证会“难以做”将是一个糟糕的选择,但我想推荐以下文章对决定密码策略的人:http://www.baekdal.com/tips/password-security-usability

答案 3 :(得分:1)

  • 不得匹配在<之前使用的任何密码 - 只有一个必须在服务器端执行,但可以使用哈希或某种形式或加密安全地完成,因为所述密码的客户端副本将不是一件好事。

答案 4 :(得分:0)

Regexp可能就是你想要开始的地方。如果您对Web开发中的regexp不熟悉,我建议您从这里开始:http://www.w3schools.com/jsref/jsref_obj_regexp.asp。如果你真的没有网络开发的经验,我就不得不问你是如何陷入工作的,你必须学习一门新语言来完成一项相对简单的任务。你肯定需要了解javascript来做所有客户端这样的事情。哦,我不建议测试

  

不得与

之前使用的任何密码匹配

以客户端的简单方式执行此操作风险太大,并且在没有从外部库提供帮助的情况下安全地执行此操作太危险了。希望这有帮助并祝你好运!