使用url中的令牌访问站点是个好主意,这个令牌可以通过电子邮件发送,有些网站已经用这种方式重新设置了密码,但是我想访问整个站点(我想我也看过这类站点)。
这个问题类似于这个在javascript客户端使用短期访问令牌的安全缺陷。但是令牌可以在浏览器之外。
因此,我的问题是:使用短时间的令牌(比如在电子邮件中发送重置密码)是否危险?对于没有过期日期的长寿令牌(用户将能够找到旧的电子邮件并在此电子邮件中使用链接--消息是他可以在任何时候使用这个url ),并且不用登录就可以使用该站点)。
发布于 2012-08-21 23:58:22
这可能不是一个好主意,向一个用户的电子邮件与一个长期存在的令牌,允许访问一个用户的帐户永久。你为什么想做那件事?你想解决什么问题?
相反,向用户发送一个重置链接,其中包含一个短暂的、单一用途的令牌,允许用户重置他们的密码。有关如何尽可能安全地执行此操作的详细信息,请参阅此站点上关于密码重置令牌的建议。
发布于 2012-08-22 15:42:36
这是可以(相对地)安全地完成的,但是你必须小心一些事情。
首先,您应该确保没有人能够轻松地从另一个人那里访问令牌(doh!)。这在实践中比看上去更难做到。例如,如果您正在以纯文本发送令牌(将使用此邮件),则基本上是将令牌从smtp服务器传递到无法控制的smtp服务器。编辑:但同样也适用于一次性令牌。在服务器上使用SSL也是一个好主意,因为这将加密包含秘密字符串的请求头。
第二,你应该确保钥匙足够长,以使暴力攻击花费太长时间。如果您将此与服务器上的蛮力检测结合起来( hiawatha the服务器可以开箱即用),您应该可以非常安全地应对这些问题。
第三,确保钥匙是随机的!如果您使用的是microtime,这意味着攻击者可以对受害者的注册时间进行合理的猜测(大多数网站都有某种“注册时”功能),只需测试时间戳中的所有散列。这减少了要测试的散列数(对于单个目标用户!)从不切实际的大到只有一百万。这看起来可能很多,但只有一台PC和100毫秒的响应时间,这只需要一天。记住,这是一次有针对性的攻击,这使得这次袭击非常危险。
您可能实现的另一个选项是同时使用用户名的散列和URL中的访问哈希。这种方法不可能同时针对每个用户。
当考虑到这些因素时,获得基于令牌的登录可能比“常规”登录更安全,因为在常规登录中,人们会选择错误的密码并将它们写在办公桌上的纸片上。
发布于 2012-08-22 07:52:47
通过使用长期存在的令牌,您正在为暴力攻击提供方便,我不知道您如何创建令牌,但是由于有几乎无限的时间来测试,并且是一些简单的东西,比如尝试不同的urls,在某个时候,似乎很容易闯入一个帐户。而且,这个网址可能会被嗅出来。
发送到电子邮件以重置密码的令牌只工作一次(如果应用程序是安全的)。如果您在第一次使用这些令牌后不呈现无用的令牌,您将再次使您的用户帐户面临我前面描述的问题。
因此,总而言之,我认为拥有比一次使用更长时间的令牌是个坏主意。
https://security.stackexchange.com/questions/19044
复制相似问题