security - 如何在网站上通过 session 管理多个状态?

标签 security session authentication token session-state

对于以下情况,我们非常感谢任何帮助:

Amazon.com 如何管理不同级别的身份验证,一次是在您访问网站时,然后是在您转到“您的帐户”->“登录和安全”作为安全功能时?

用户登录(即验证)网站,7 天内没有任何事件。用户重新访问该网站,然后要求用户再次进行身份验证。这可以使用 cookie 来实现,但由于安全问题,它是使用来自服务器端的 session token 来实现的。 7 天后,当浏览器提供过期 token 时,会要求用户再次重新进行身份验证。

现在,新的要求是,如果用户登录并访问“您的帐户”页面,那么,

  • 如果用户仍在“您的帐户”页面上并且 10 分钟内没有任何事件,则应要求用户再次重新进行身份验证。

  • 或者。
  • 如果用户在 10 分钟后离开“您的帐户”页面并重新访问“您的帐户”页面,则应要求用户再次重新进行身份验证。

  • 所以使用 token ,我只能管理一个不活动的时间段,我如何处理多个状态,即状态(7 天)和部分状态(10 分钟)。

    处理这种情况的行业惯例是什么?不想将 cookie 用作安全问题。由于 SSO 提供程序用于身份验证,因此使用数据库将是最后的选择。

    - 大卫。

    最佳答案

    如何处理这个问题将归结为当前到期 session token 逻辑的实现细节。

    一种常见的方法是将 session token 存储在数据库或内存缓存中。如果是这种情况,您可以简单地添加一个新列来指示用户何时打开帐户页面。

    例如,您的新列可以称为 accountSettingsStartTime .通常它没有任何值(value),但是当用户导航到帐户页面时,它将填充当前时间。当用户离开帐户页面时,您可以将其清除。然后,当您检查安全 token 时,您只需要检查您的标准 7 天到期时间以及检查 accountSettingsStartTime列并确保它在最后 10 分钟内。

    或者,您可以在用户导航到帐户设置时为用户提供一个有效期为 10 分钟的全新 session token ,并强制使用该 token 进行涉及帐户设置的操作。然后,您可以在更改帐户设置时检查该 token ,并要求用户重新验证它是否已过期(并使他们的标准 7 天 token 无效)。当然,这需要客户端付出更多的努力。

    正如他们所说,给猫剥皮的方法不止一种 :)

    关于security - 如何在网站上通过 session 管理多个状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49442823/

    相关文章:

    security - 如何使用 check 防止恶意 Meteor 订阅

    security - 我的基本用户身份验证方法有什么问题吗?

    php - 我的 Laravel 5.2.10 session 不会持续

    php - session 代码点火器本地主机

    javascript - JQuery ajax 函数确实有效,但 php 脚本无效

    azure - 使用客户端凭据从 Azure AD 获取访问 token 以进行 native 应用程序注册 (PowerBI)

    使用 SAML 进行身份验证

    php - 如何正确存储 php 服务器代码的全局变量

    security - 私有(private)应用程序的 OAuth2 流程和最佳实践

    image - 如何使用 apache 或 .htaccess 限制对某种内容的访问?