欢迎来到百胜集团公司,有问题可以咨询本公司QQ:202240495
当前位置:新百胜公司 > 常见问题 > 正文

新百胜是如何安全地处理用户的登录凭据

03-15 常见问题

新百胜是如何安全地处理用户的登录凭据

对于大多数网站,您在其中具有不同的区域(主页,用户个人资料,管理页面等),其中一些区域是公共的,而其他区域则仅限于某些用户。您通常希望唯一地标识用户,以便您可以提供自定义的内容或捕获用户的特定信息。许多站点还需要保护站点的一部分,例如管理区域以维护和更新站点的内容。在CMS网站中,某些用户可能可以创建内容,但其他用户必须先批准该内容,然后才能显示给公众。

保护用户名和密码

无论有什么需求,限制或自定义,都需要确定每个访问您网站的用户。对于面向普通用户的面向Internet的网站,用户名和密码在很大程度上仍然占优势,因为没有更好的选择。如果您在特殊环境中工作,还有其他选择,例如公司Intranet,您可以在其中控制站点访问者。

虽然很常见,但登录名和密码通常以离开网站及其用户的方式处理,从而不必要地更容易受到安全攻击。通过遵循一些最佳做法,您可以更好地保护您的网站及其内容免受黑客的攻击。保护不力的后果可能很严重。想象一下一个站点,在该站点中,由于密码管理不善,任何用户都可以发布来自公司的内容,或者在一个在线商店中,任何用户都可以查看站点上的所有订单。

让我们看一下在您的网站上使用登录名和密码时的一些安全注意事项。

超过200万个WordPress主题和插件,Web和电子邮件模板,UI工具包等

使用Envato Elements成员资格下载数千个WordPress主题和插件,Web模板,UI元素以及更多内容。无限制地访问不断发展的图书馆,以获取数百万个广告素材和代码资产。

应用程序设计模板

下一个移动应用程序设计的完美起点。

PHP脚本

超过4,000个PHP脚本,插件和附加组件。

iOS应用程式范本

为您的下一个项目提供2,500多种出色的iOS应用模板。

用户名:电子邮件或常规

该登录名由一个用于标识您的用户名和一个用于验证您是否是您声称的用户的密码组成。网站通常允许用户指定自定义用户名或使用用户的电子邮件地址作为其用户名。

好处

电子邮件不会经常更改,并且大多数网站已经收集了此信息,因此与他们创建的用户名相比,用户忘记电子邮件的可能性也较小。由于用户很少共享电子邮件帐户,而那些共享电子邮件帐户的用户(可能不想使用单独的帐户),该电子邮件也将自动具有唯一性。

缺点

电子邮件的缺点包括两个共享电子邮件的人,不能拥有单独的帐户。此外,如果您的网站有正当理由让一个人拥有多个帐户,则使用电子邮件可能无法做到这一点,但使用用户名更容易实现。由于用户可能在每个站点使用相同的电子邮件,因此电子邮件也很容易被黑客入侵,但是由于用户倾向于重用用户名与重用密码一样多,因此大多数用户名被黑客入侵的难度不会增加。

除非您出于特殊原因要避免使用电子邮件地址,否则请使用电子邮件作为登录用户名。电子邮件的使用也已成为网站上的规范。不过,请不要忘记为基于电子邮件的登录提供一种更改电子邮件的方法。如果没有此功能,用户将需要创建一个新帐户并丢失所有过去的历史记录,这仅仅是因为他们由于毕业或更改工作而更换了Internet提供商或丢失了以前的帐户,从而导致其旧电子邮件消失了。

出于隐私原因和垃圾邮件预防问题,使用电子邮件作为登录名时请务必小心,不要公开显示。

登录名可能会提供太多信息

您网站的登录页面将是黑客研究的第一要点。黑客将尝试确定网站上存在的有效帐户。正确处理登录页面会使黑客的工作更加困难。首先,您应该最小化登录失败提供给攻击者的数据量。当某人输入无法识别的用户名时,您最初的想法可能是提供一条有用的消息,告知他们应检查其用户名。当找不到用户名并且密码与给定用户的密码不匹配时,通过显示相同的错误消息,可以提供更安全的页面。该消息应表明用户名和密码的组合不正确,以使用户知道验证两条信息,而不仅仅是一条信息。

如果您的站点使用电子邮件作为登录用户名,则与失败的用户名和密码组合相比,如果您为未知的登录返回不同的消息,则攻击者可以轻松地验证用户是否在您的服务上拥有帐户。这样做确实使用户不太方便,但是增加的安全性通常是更好的折衷方案。

如前所述,如果删除了无效用户名的特定消息,则会以提高安全性为代价来换取更差的用户体验。提供一条不存在登录名的消息将帮助用户注意打字等打字错误,john而不是jon更简单。该消息还可以帮助不记得他们在您的网站上使用了哪个用户名的用户。请记住,这些类型的消息为黑客提供了一种简便的方法来验证用户是否存在于您的网站上。

您还可以通过更好地处理多次登录尝试来帮助挫败黑客。误输入用户名或密码不止一次,通常是由于输入错误的字符,转置两个字符或将密码用于另一个站点而不是正确的密码而引起的。允许无限制的登录尝试将为反复尝试输入用户名和密码以确定正确登录的暴力攻击打开大门。自动化的工具和脚本加快了处理速度,允许黑客有条不紊地处理许多潜在的密码,直到找到正确的登录名为止。

在每次失败的登录尝试之后引入增加的延迟时间也有助于阻止黑客。首次登录尝试通常会发生。在返回结果之前,第二次登录会延迟一秒钟的时间。在返回响应之前,进一步的尝试被延迟的时间越来越长。此延迟可将对犯错的合法用户的破坏降到最低,但会减慢试图暴力破解该站点的黑客的速度。

对于更敏感的数据,可以通过在多次尝试失败后将帐户锁定来采取更有效的方法。锁定帐户会暂时或永久禁用该帐户。锁定会阻止暴力攻击,因为在此之后,登录将无法进行。只要显示出于锁定原因的消息,暂时禁用对用户的影响就应该很小。永久锁定要求用户与支持人员联系以解决问题并更适合登录,从而保护重要数据。

保护密码

密码是登录时最敏感的方面。切勿以纯文本形式存储密码。绝不。曾经。这样做意味着几乎所有安全问题都可以公开登录信息。甚至应避免使用加密密码,就好像黑客获得了对加密数据的访问权限一样,解密过程可能会更加容易。您可以在其中检索密码的任何存储设备,使黑客更容易做到这一点。

盐腌和散列

密码应加盐和散列。盐是为每次登录存储的随机生成的唯一值,并在哈希之前添加。添加盐可以防止相同的密码具有相同的哈希值,并防止黑客预先建立可能的密码组合的哈希结果列表。通过添加随机哈希,密码abc123(请不要使用任何类似的密码作为实际密码)将为每个用户带来不同的哈希。

哈希函数将密码转换为固定长度的值。有专门为密码设计的功能,例如PBKDF2或Bcrypt。现代图形卡中的GPU处理器可以执行散列所需的计算,并且可以快速破解许多弱算法。用于破解密码的专用机器可以在六个小时内确定八个字符或更少的密码。

用户通常会在拥有帐户的大多数网站上重用相同的密码。许多站点已开始针对他们自己的登录名测试来自主要帐户登录黑客的公开凭据,并联系用户名和密码组合匹配的用户。Evernote和Facebook最近检查了从Adobe发布的登录凭据,并使用相同的凭据警告用户。

正确处理密码的最简单方法是使用Web框架中包含的工具。密码安全性很复杂,一件事弄错可能会使您的用户密码容易受到攻击。pH pass使用Bcrypt为PHP提供了一个公共域库。内置的.NET成员资格提供程序的较旧版本使用的哈希值较弱,而新的通用提供程序使用的是PBKDF2。Rails还提供了一个Bcrypt宝石。

重设密码

如果您妥善保护了密码以致无法找回密码,则您将无法为用户提供一个忘记的密码。然后,您需要为合法忘记密码的用户提供另一种方式,以安全的方式重置密码。

密码重置页面

良好的重置密码页面允许用户在不知道当前密码的情况下更改密码。传统方法允许用户输入其电子邮件地址,然后将链接发送到允许其重设密码的网页。发送链接比发送密码更安全,因为在用户访问页面之前不会创建新密码。通过电子邮件发送新密码将创建一个新凭证,任何拦截该电子邮件的人都可以在用户不知情的情况下使用。如果有人拦截了电子邮件并重设了密码,则用户将知道他们何时访问并尝试重设密码。

良好的重置页面也不应提供有关帐户存在的验证。如果在登录时不存在帐户,则不提供反馈也与我们讨论的逻辑相同。即使登录名不存在于系统中。最好的方法是提供一条消息,指示已将指令发送到文件中的电子邮件地址。您仍应向输入的电子邮件发送电子邮件,因为这可能是忘记帐户使用哪个电子邮件的合法案例,例如输入工作电子邮件而不是个人电子邮件。

密码重置链接

重置密码的链接应经过精心设计,以使重置请求的使用期限有限,并且只能使用一次。为每个重置请求创建一个唯一的令牌,并将其绑定到请求的帐户,并将其存储在数据库中。此令牌将成为通过电子邮件发送以重置密码的URL的一部分。还应为令牌分配一个到期时间,并在重置完成后将其删除。如果有人尝试使用已使用或已过期的令牌,则请求将失败。到期时间必须足够长,以允许接收电子邮件并让用户完成操作,但不要太长,以免将来使用过多。通常几个小时的时间就足够了。

通过电子邮件重置密码

使用电子邮件重置密码还可以使站点的安全性取决于用户电子邮件的完整性。如果可以访问该电子邮件,则该人可以重设密码。站点可以添加安全问题,在重置密码之前必须先回答这些问题。如果答案很容易找到,安全性问题几乎不会提供额外的安全性。一个安全问题,“我的家乡是什么?” 如果可以在此人的Facebook个人资料上找到答案,则提供的安全性将很小。有关开发好的问题的更多信息,请参见http://goodsecurityquestions.com/。

两步认证

登录名和密码仅需要一对信息即可访问网站。当提供该信息时,则假定用户是正确的人。为了降低窃取凭据的效率,您可以在身份验证过程中增加第二步。除了用户知道的内容(用户名和密码)之外,用户还必须使用他们当前拥有的内容,通常是通过SMS或应用程序使用的手机来实现此目的。

银行可能是第一个使用自定义硬件来生成时间相关代码的方法来实现此过程的。Google普及了使用SMS短信或应用程序作为第二步。现在,许多站点都使用与Google的RFC 6238实施兼容的登录名。您可以找到已经针对大多数流行的框架(例如ASP.NET,ASP.NET#2,Ruby on Rails,PHP和Django)实施该技术的库。

外部认证

为避免这些问题,您还有另一种选择,让其他人通过与第三方集成以进行身份​​验证来处理所有这些问题,例如Twitter,Facebook或OpenID。这样做有利有弊。它确实消除了我们在这里讨论的大多数安全性问题,因为其他人正在处理这些问题。但是,这些其他网站也可能是比您更大的黑客目标。如果您使用另一个站点来处理身份验证,则如果该登录名被泄露,则黑客可以访问您的站点。

从声誉和社会角度来看,使用已知的第三方既有帮助又有伤害。允许使用Facebook或Twitter登录的优点是,那里已有许多用户拥有帐户,因此他们很乐意使用它。其他访问者可能会将与这些网站的集成视为负面功能,并且由于该网站或向其提供的唯一选项而无法使用您的网站。

结论

Web应用程序的登录在确保网站安全方面起着至关重要的作用。注意保护您的登录名将在很大程度上保护您的网站,网站的用户及其私人信息。为了安全地使用登录名,请最小化您的登录名和密码重置页可能提供给黑客的数据量。此外,请采取适当的安全措施,以使其更难以通过暴力破解来猜测用户的密码。

保护密码是任何站点的关键问题。密码保护不佳会使黑客的工作更加轻松,并且可能以您的网站的公开凭据公开给公众告终。使用哈希密码和加盐的密码会使黑客的工作更加困难。此外,在登录过程中添加第二步选项可以为您站点的用户提供更多保护。您还可以选择利用第三方来处理您网站的登录。

版权保护: 本文由 新百胜公司 原创,转载请保留链接: http://www.yrdzx.com/gsdt/32.html