我们正在开发一个新项目,我们是两个主要开发人员,并且在如何使用令牌来保护服务器和客户端之间的通信方面处于十字路口:
第一个建议:
步骤一)客户端请求一个主令牌,通过将用户名和密码以及current_time(这个变量将保存在服务器的数据库和客户端中)到api,服务器解释输入,并呈现一个哈希令牌(例如:58f52c075aca5d3e07869598c4d66648)将其保存在数据库中并返回给客户端。
第二步)客户端现在保存主令牌,并使用主令牌 + 在身份验证请求中发送的 current_time 变量创建新的哈希令牌(让我们将此新令牌称为 main_token),服务器也这样做并使用创建相同的令牌相同的算法。
第三步)客户端每次查询服务端API,都会发送main_token给服务端,此时服务端将生成的token与客户端发送的main_token进行比较,如果匹配,则说明用户是真实的
第二个建议:
第一步) 客户端生成两个随机密钥 ($key1 = rand(10000,90000); $key2 = rand(10000,90000);) 对于 API 上的每个请求,客户端使用查询类型创建哈希,然后具有复杂算法的两个密钥,并将这两个密钥 + 哈希发送到服务器
第二步)服务器使用客户端使用的相同算法创建一个哈希值,并与客户端发送的哈希值进行比较,如果匹配,服务器继续处理查询
现在,问题是,哪一种是用于保护 api 请求的最合乎逻辑、最安全的方式
此致