it-swarm.cn

Web应用程序中用户访问和密码处理的可用性和安全性?

我正在寻找一个针对普通用户的网站,该网站将处理我不希望受到损害的个人数据。如何使网站安全又可用?

似乎大多数站点都使用用户标识符(电子邮件地址似乎最好)和密码,这是相当容易理解的。

一些银行网站通过使用PIN)或标准标识符后面的安全性问题或替换了密码来解决此问题。 。

我还听说过,一旦确定用户可以更容易地仿冒帐户详细信息,便允许用户选择自己的颜色方案或网站的外观。有谁知道使用此工具的网站及其效果如何?

在我看来,大多数系统中的真正弱点似乎是密码重置功能。由于用户一直都忘记密码,因此我们需要在此处提供一些帮助,但是在帮助与极其不安全之间取得平衡似乎非常困难。再次,用户安全性问题方法似乎在这里得到了广泛使用,但是我遇到的这个问题的两个方面要么是用户设置了问题并提供了答案,要么是关于用户的一些不变的问题。

对于用户提供的问题,无论您多么努力地告诉他们这是非常重要,我都不相信他们不要提出“ 1 + 1是什么”的问题。

对于不可变的问题-如果您是在询问用户对事物的看法,而不是简单的事实,则他们更可能会改变-他们倾向于变成实际上很容易找到的事物(父母的名字,第一只宠物)如果您将用户作为攻击目标。

我意识到,在安全性和易于使用之间总会有妥协,但必须有可能比现在的大多数站点做得更好。您可以建议使用任何不太传统但可靠的方法来保护用户帐户吗?我听说过有关图像网格,自定义验证码等的信息-在实践中有这些经验吗?是否有任何站点对此管理得特别好,并且是否显示了它们的工作方式/原因?

10
glenatron

好问题。

短版

与大多数网站一样,除了用户名/电子邮件/密码外,还有其他几种选择。您无法解决最终的安全性问题,但可以进行教育。验证码还有其他选择。安全与易用性是永无休止的健康辩论。

登录期间的额外安全选项

  • 雅虎!使用“ 登录印章 ”的概念,您可以在其中选择一些文本或图像,并且自定义内容将存储在Cookie中,并在您返回时显示在登录页面上。这里的想法是,它有助于防止网络钓鱼攻击:与其向用户解释网络钓鱼的技术细节,不如让用户记住“确保网址以 https://www.yahoo.com开头”之类的内容。 ”,您只是告诉用户在页面上查找其自定义的文本或图像。如果不存在,则说明您不在正确的站点上,因此请不要提供登录凭据。

  • 魔兽世界使用 暴雪身份验证器 ,它既可以订购也可以运输给您,或者是iPhone/Android应用。两者都会每分钟生成与您的帐户相关联的唯一代码。登录时,您需要提供您在Battle.net上注册的电子邮件地址,帐户密码以及该暴雪身份验证器代码。尽管它是一款游戏,但《魔兽世界》本身就是一个钓鱼网站,但事实证明,这种方法在减少通过网络钓鱼的被盗帐户数量方面非常有效(即使您侵入某人的电子邮件帐户并检索或更改了他们的《魔兽世界》密码, ,除非您具有实际的特定同步身份验证器代码,否则您无法登录。值得注意的是,Authenticator在理论上是可以被黑客入侵的,但是这样做需要更多的工作。

  • myOpenID 使用与Yahoo!称为“您的个人图标”。由于OpenID还会带来其他安全隐患(例如,如果您可以访问我的OpenID,那么您现在就有可能访问我与该OpenID一起使用的所有站点),因此,采取任何增强保护措施的选择都是有帮助的。我不认为大多数非技术用户都拥有具有OpenID提供程序的OpenID帐户,因此,这可能没什么大不了的。尽管如此,JanRain还是要加倍努力。

用户提供明显的安全性问题和答案时该怎么办

这是您无法解决的问题,也不是您真正的责任。您应该重点关注的是,通过向用户宣传他们需要注意的内容来促进他们的正确行为。根据您所拥有的用户群的类型,您可能会或多或少地积极进取-例如Yahoo!如上所述,Blizzard和Blizzard都非常进取,并且还实施了更加主动的安全帮助。

您可以执行以下操作:

  • 提醒用户使用不仅由字母数字字符组成的唯一密码
  • 说明密码应该由不存在的单词构成,并帮助说明如何创建适合该模式的难忘密码
  • 在用户创建安全密码重设问题的流程中使用清晰的副本,并强调了提出其他人不知道答案的重要问题的重要性
  • 提供人们可以使用的问题的示例(提供“母亲的娘家姓”之类的示例,这些日子在Facebook上很容易找到)
  • 编写FAQ提供有关如何保护您的帐户的提示。由于网络邮件是经常使用的安全漏洞,因此请提供有关保护电子邮件帐户以及如何防范网络钓鱼尝试的基本提示。

成为负责任的网站所有者。我将它比作火车站上标有“提防扒手”字样的火车站-作为个人,您的责任是不要让钱包清晰可见,然后在钱包被盗时提出投诉。但是,车站管理部门很高兴提醒人们注意事项。 Web上的问题在于,许多人不知道要寻找什么或如何识别威胁。我们可以通过持续不断地教育与我们接触的每个人来提供帮助。

验证码和替代品

验证码存在的原因有两个:一是防止您的站点被DDOS攻击,二是防止黑客执行字典攻击。但是缺点是,在大多数情况下,它们是非常不友好的,并且完全不是“ Do n't Make Me Think ”。

如果您想防止或至少阻止字典攻击,请考虑在登录屏幕上添加一个计时器,该计时器在每次尝试后都会增加(在一定次数后)。多数用户会在尝试5次后进入,而这超出了可疑的行为范围。通过引起违规者而不是普通用户的麻烦,使字典攻击变得烦人。

安全性与易用性

雅各布·尼尔森(Jakob Nielsen)去年在写密码字段存在可用性问题时引起了轰动,并且 应该停止屏蔽其输入 。他认为,仅当有人直接站在您身后时,才对输入进行掩盖才能真正防止安全漏洞,而且99%的情况并非如此,那么为什么仅在Edge情况下很难使用呢?作为可用性专家,很难与他争论。安全专家Bruce Schneier甚至 同意

因此,安全性与易用性是一个有争议的问题,无法真正解决。这是一个健康的论点:如果事情在任何一个方向上摇摆得太远,那对最终用户都是不利的。作为UI设计师,重要的是要认识安全专家的论点,并在设计用户体验时将其考虑在内。

9
Rahul

实际上,大多数提供商都提供登录API(通常基于Open Auth),您甚至不需要处理用户登录/身份验证问题。只需让您的用户使用Facebook,Google,Yahoo,Twitter等登录即可。我觉得Google,Microsoft,Yahoo等。等与我相比,将在保护登录凭据和处理密码重置方面做得更好。对于用户来说,这确实是最好的情况,因为他们不需要记住新的凭据集,并且在大多数情况下,如果他们已经登录到其邮件中,则他们将不再需要再次输入密码。完美的一键式(无需输入)登录。

进行这项工作有两个小技巧。 (1)您必须支持相对大量的登录提供程序,以确保您捕获所有用户而不会给他们带来不便。 (2)您必须支持并鼓励帐户链接,以便用户可以在您的站点将多个登录提供程序添加到他们的帐户中,因为提供程序可以(并且经常在没有警告的情况下)更改其API或进行维护以有效地将这些用户锁定在外您的网站。

从您的角度来看,通常您可以直接从提供程序中检索用户参数,从而使用户不必输入诸如电子邮件地址,姓名,电话等信息。

1
Jonathan

老实说,作为一名程序员,我真的不喜欢个人问题/答案安全性步骤,因为从严格的编程角度来看,答案可能输入错误。如果他们的答案是一个名字,会发生什么,但他们不记得是输入全名还是简称,或者只是给定的名字,或者他们错过了撇号并且没有意识到。

另一方面,验证码(种类繁多)需要一个黑白答案。这是有效的还是无效的。话虽如此,验证码的可读性有时给用户带来了问题。多数可读,但有些只是乱码。

我认为重置密码时要求进行电子邮件验证的方法对我来说似乎一直很安全,因为它显然要求我知道我的登录详细信息,以便使用second系统(我的邮件帐户)进行访问链接back到站点,要求输入新密码。

0
Nick Bedford