【发布时间】:2021-12-05 00:11:16
【问题描述】:
有一个远程 api,它需要 hmac sha256 密钥,该密钥由每个请求的密钥和时间戳生成。
不应在 Nuxt 项目的客户端代码中看到此 hmac 标头生成。并且请求必须在服务器端使用 hmac 标头进行。例如,我将向 api 发送登录帖子请求。我将发送密码、电子邮件和 hmac 密钥作为标题。但是必须为客户端隐藏此标头生成代码。并且发布请求应该在服务器端完成。不是客户端。
Api 需要这个 hmac 密钥头。要生成 hmac 密钥,您需要 api 提供者提供给我们的密钥。您可以看到 hmac 生成如何在 this link 上工作。我们将放置一些数据和时间戳。所以 api 解密密钥并检查时间戳。如果时间戳增量超过 20 秒,则请求不会被 api 接受。
如何将此标头添加到 axios 仅用于 axios 请求的服务器端调用,并且不应在客户端代码上看到此生成脚本?
X-HMAC-TOKEN: 'hmac sha256 key generated with timestamp and secret key. and this generation script should not seen on client code'
【问题讨论】:
-
这个令牌什么时候使用?做什么的?因为只有特定的地方可以使用私有变量:本质上只有 SSR + 在构建期间。
-
每个请求在 api 端使用生成的 hmac 密钥有 20 秒的生命周期。这是出于 api 方面的安全原因。它是 hmac sha256 加密密钥。所以在 Nuxt 项目中,它应该在某处生成并作为标头添加到所有 axios 请求中,但仅适用于服务器端请求
-
您的应用何时会使用这些服务器端请求?另外,您的 Nuxt 应用程序的设置是什么?
-
例如从 api 请求私有数据。所以 api 需要这个 hmac 密钥。并且生成 hmac 密钥需要 api 提供者给我们的密钥。您可以在此链接上查看 hmac 生成是如何工作的。我们将放置一些数据和时间戳。所以 api 解密密钥并检查时间戳。如果时间戳增量超过 20 秒,则不会通过 api 接受请求。 devglan.com/online-tools/hmac-sha256-online
-
@kissu 我还没有应用程序。如果我不能解决这个问题,我不会在项目中使用 Nuxt