【问题标题】:What is the best way to go about generating a "token" for user authentication为用户身份验证生成“令牌”的最佳方法是什么
【发布时间】:2021-02-23 00:13:31
【问题描述】:

假设我有一个 MySQL 数据库,其中包含数千个用户帐户。这些帐户包含大量数据,但出于验证目的,它们每个都包含一个用户名和一个(散列和加盐的)密码。现在,当用户请求登录时,我将从他们那里获取用户名和密码,通过 WSS 将其传输到 Node.js 服务器,然后通过 HTTPS 将其传输到另一台服务器上的 PHP 文件。在该服务器上,我将在 MySQL 数据库中查找用户名,如果找到帐户,我将对密码进行哈希处理,看看它是否与该用户名的密码匹配。如果它们都匹配,那么我希望 PHP 文件创建某种“验证令牌”,保存它(并将其与验证的帐户相关联)并将令牌发送回 Node.js 服务器。然后,我希望 Node.js 服务器将该令牌发送回客户端并让客户端保存该令牌。现在,下次用户通过 WSS 连接到 Node.js 服务器时,我希望客户端检查现有令牌,如果存在,我希望它通过 WSS 将该令牌发送到 Node.js 服务器,即 Node.js 服务器。 js 服务器通过 HTTPS 将其发送到 PHP 文件,并通过该 PHP 文件查看该令牌所属的帐户,并完成登录...

所以我想我的第一个问题是:这是一个好的模型吗?这是一个好主意吗?这是否安全,或者我应该以不同的方式执行此操作?

我的第二个问题是:生成此令牌的最佳方法是什么?它应该是完全随机的吗?它应该是字母+数字的组合吗?它应该是一些随机值的散列吗?我应该如何生成这个“令牌”?


为了澄清,我不是在问如何构建服务器或发出请求或传输数据或任何类似的东西,我只是在问生成可用作“令牌”的最安全方法是什么身份验证与可以使用用户名+密码的程度相同。

提前致谢!如果这是一个非常愚蠢的问题,我很抱歉。

【问题讨论】:

  • 这似乎更适合Information Security。如果您在 PHP 中实现设计时遇到问题,您可以在此处发布您的代码。
  • @Barmar 啊,好的。谢谢你的提醒。我会检查一下信息安全,看看它是否适合这篇文章,如果适合,我会继续把它移过来。 :)

标签: php security authentication token


【解决方案1】:

我认为您描述的是JWT。有several packages 在 PHP 中实现这个。

【讨论】:

    猜你喜欢
    • 2021-04-26
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    • 2011-09-28
    • 2015-10-24
    • 1970-01-01
    • 2016-05-27
    • 1970-01-01
    相关资源
    最近更新 更多