如何为条带状态生成随机哈希
How to generate random hash for stripe state
根据 Stripe 网站上的建议:
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
参数应该是唯一的、安全的,并且只是一系列字符,这些字符将通知我的应用程序哪个用户刚刚被 Stripe connect 授权。我会将该值存储在我的数据库中,当用户 returns 时,我会知道他们是谁,并能够将他们引导到正确的位置。所以我的下一个问题。我如何创建该唯一令牌?我有一个从 OAuth 提供商为我的应用程序的单独部分返回的唯一令牌,但我没有将其保存在数据库中。
是否有推荐的方法在我的节点服务器上创建这种类型的唯一令牌?应该是 md5
还是 sh1
?我是否应该获取用户名和随机字符串并将其保存在我的数据库中,就好像它是盐和哈希一样?
require('crypto').createHash('md5').update(STRING_TO_BE_HASHED + SALT).digest("hex")
我是不是想多了?
您可能想使用功能齐全的 CSRF 中间件,例如 csurf 来管理 CSRF 令牌,但如果您想自己生成令牌,任何 "sufficiently random" 值都应该有效。这样的事情应该可以解决问题:
const crypto = require('crypto');
var token = crypto.randomBytes(64).toString('hex');
根据 Stripe 网站上的建议:
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
参数应该是唯一的、安全的,并且只是一系列字符,这些字符将通知我的应用程序哪个用户刚刚被 Stripe connect 授权。我会将该值存储在我的数据库中,当用户 returns 时,我会知道他们是谁,并能够将他们引导到正确的位置。所以我的下一个问题。我如何创建该唯一令牌?我有一个从 OAuth 提供商为我的应用程序的单独部分返回的唯一令牌,但我没有将其保存在数据库中。
是否有推荐的方法在我的节点服务器上创建这种类型的唯一令牌?应该是 md5
还是 sh1
?我是否应该获取用户名和随机字符串并将其保存在我的数据库中,就好像它是盐和哈希一样?
require('crypto').createHash('md5').update(STRING_TO_BE_HASHED + SALT).digest("hex")
我是不是想多了?
您可能想使用功能齐全的 CSRF 中间件,例如 csurf 来管理 CSRF 令牌,但如果您想自己生成令牌,任何 "sufficiently random" 值都应该有效。这样的事情应该可以解决问题:
const crypto = require('crypto');
var token = crypto.randomBytes(64).toString('hex');