如何为条带状态生成随机哈希

根据Stripe网站的build议:

CSRF Protection To prevent CSRF attacks, use the state parameter, passing along a unique token as the value. We'll include the state you gave us when we redirect back.

我想在我的URL中包含一个state参数来保护我的应用程序。 我认为现在我已经清楚, state参数应该是唯一的,安全的,只是一系列的字符,将通知我的应用程序哪个用户只是由条纹连接授权。 我将把这个值存储在我的数据库中,当用户返回时,我会知道他们是谁,并能够将他们引导到正确的位置。 所以我的下一个问题。 我如何创build独特的令牌? 我有一个独立的令牌,从我的应用程序的一个单独的部分OAuth提供程序返回,但我没有保存在数据库中。

有没有build议的方式来创build我的节点服务器上的这种types的唯一令牌? 应该是md5还是sh1 ? 我应该把用户名和一个随机string,并将其保存在我的数据库,就像它是一个盐和散列?

require('crypto').createHash('md5').update(STRING_TO_BE_HASH‌​ED + SALT).digest("hex")

我是否在意这个?

您可能希望使用function齐全的CSRF中间件(如csurf)来pipe理CSRF令牌,但是如果要自己生成令牌,则应该有任何“足够随机”的值。 像这样的事情应该做的伎俩:

 const crypto = require('crypto'); var token = crypto.randomBytes(64).toString('hex');