security - 从电子邮件即时登录。为什么这样做的人这么少?

标签 security email hash authentication

尝试搜索此内容,但一无所获。请求讨论或相关链接。

假设我们要发送一封电子邮件来吸引用户登录我们的 super 社交网络应用程序。这封电子邮件的目的是让他们返回网站并在他们忘记我们之前多浏览一下,所以我们自然希望降低他们返回的障碍。 Cookie 有助于防止他们每次都需要登录,但在用户忘记凭据的情况下仍然没有帮助。我们希望在这里得到即时的满足——一键点击即可直接操作宝贝。相反,为什么我们不能向用户发送我们存储在数据库中的随机生成的、时间敏感的 token 的哈希形式?如果他们可以将此 token 提供回服务器,那么我们就可以信任他们的身份。

只要您正确管理 token ,这种情况似乎是安全的。该过程如下:

  1. 在向 John Doe 发送提醒电子邮件之前,生成一个随机数字 token (足够大的数字以防止猜测),该数字 token 将在几天后过期。

  2. 在电子邮件中,包含一个包含 token 哈希形式的网址(可能与用户 ID 进行异或)。

  3. 当 John Doe 登录他的电子邮件并单击链接时,服务器会验证数据库中 token 是否存在并且未过期。如果 token 存在,他就会被服务器自动登录。

安全性:我们假设 John Doe 的电子邮件实际上属于 John Doe,因为电子邮件地址是在注册过程中经过验证的。任何有权访问 John Doe 电子邮件的用户都可以访问他的帐户;然而,这并不新鲜。许多网站已经假设用户的电子邮件帐户是安全的,因为它们实现了重置电子邮件密码的功能。

我在谷歌上搜索后发现只有一个网站可以做到这一点,OKCupid,这是一个在线约会网站。有谁知道还有其他网站可以做到这一点吗?为什么通过电子邮件即时登录没有更常见?安全?增加的复杂性缺乏实质性好处?

最佳答案

在某些网站上,您可以将“重要的内容”与“非常非常重要的内容”分开。假设您网站上的“重要内容”允许用户查看策略、事件成员和传入的群组消息。 “非常非常重要的东西”允许您更改策略、重置密码和添加新用户。所以你可以做如下:

  1. 允许您的 http 链接访问“重要内容”。毕竟,如果人们了解您系统中的策略、用户或消息,这并不是世界末日。
  2. 如果请求的是“非常非常重要的内容”,则请求实际的用户名/密码身份验证。

本质上,您是在系统内建立不同的信任级别。您向外发送的吸引用户的电子邮件几乎总是用于无害的事件(“嘿,看看我们添加的新小部件”),如果人们希望留在网站上,那么他们不会介意额外的身份验证时间。

关于security - 从电子邮件即时登录。为什么这样做的人这么少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4653903/

相关文章:

c# - 将文件从 Internet 附加到邮件,而不将其保存在 ASP.NET 的磁盘中

javascript - SHA-256 算法和/或去散列算法

android - Android 中的数据安全

java - 从安全沙箱(例如小程序)中生成自定义类

email - 没有通配符 SPF 记录的站点是否容易受到子域欺骗攻击?

c++ - 为依赖类型特化 std::hash<T>

ruby - 检查 ruby​​ 散列是否包含大于 x 的值

security - Lift 是否会阻止 HTTP 响应拆分?

azure - 通过 MS Graph 将用户添加到 AAD 组

python - 在 Google App Engine 中接收邮件