如何在网站中实现非密码认证

信息安全 应用安全 Web应用程序 验证
2021-08-19 18:55:01

在回答这个关于 pw reset的问题时,DW 说:

最后,考虑非密码身份验证。密码作为身份验证机制存在许多问题,您可以考虑使用其他方法来验证用户身份,例如在他们的机器上存储一个安全的持久 cookie,并使用不可猜测的秘密来验证他们。这样,就不会忘记密码,也不会让用户被网络钓鱼,尽管您确实需要为用户提供一种授权从新机器或新浏览器访问的方法(可能通过电子邮件发送到用户的 pre-注册的电子邮件地址)。

如何做到这一点?该解决方案的安全性和用户友好性如何?主要缺点是什么?

4个回答

几乎在您单击“记住我”的任何情况下,这已经在您的计算机上发生了。随机字符串存储在 cookie 中并链接到您的帐户。需要更多的原因与移动性有关。如果您更换计算机,如何在没有标准用户名/密码的情况下重新登录?用户根本不会随身携带 cookie。

在电子邮件建议的情况下,您可以发送一个随机代码,该代码可以输入到表单字段中,甚至可以作为链接单击。为了提高安全性,我会在一段时间后使这些点击链接失效,并存储一个不同的随机代码作为 cookie。

您可能会发现这篇感兴趣的学术论文:Conditioned-safe Ceremonies and a User Study of an Application to Web Authentication该论文描述了一种使用安全持久 cookie 进行身份验证并使人们能够使用电子邮件链接注册新机器的方法。这绝不是唯一的方法——它只是一个例子,可能还有许多其他可能的方法可以沿着这些思路做某事。

可以通过三种方式验证身份:基于他拥有的(电话、设备)或他所知道的(密码、故事)或他的身份(他的指纹、手掌扫描)。最后一个在远程上下文中不可用。

因此,您的问题是关于使用您所知道的替代方法。也就是说,使用你所拥有的(通常是有时间限制的)。这通常涉及令牌或一次性密码。

查看其中一些:http : //www.duosecurity.com/、http ://code.google.com/p/google-authenticator/和http://www.wikidsystems.com/

它们就像拥有一部手机(和丢失它)一样安全。这是相当友好的。

我已经遇到了这个服务的一个足够好的和简单的身份验证过程它使用您的手机号码通过短信发送一次密码。