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

时间:2017-04-22 11:55:21

标签: node.js stripe-payments stripe-connect

根据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.

我想在我的网址中加入state参数,以保护我的申请。我认为现在已经足够清楚state参数应该是唯一的,安全的,并且只是一系列字符,它们将通知我的应用程序哪个用户刚刚被Stripe connect授权。我将该值存储在我的数据库中,当用户返回时,我会知道他们是谁,并能够将他们引导到正确的位置。所以我的下一个问题。如何创建该唯一令牌?我有一个从OAuth提供程序返回的唯一标记,用于我的应用程序的单独部分,但我没有将其保存在数据库中。

是否建议在节点服务器上创建此类唯一令牌?它应该是md5还是sh1?我应该使用用户名和随机字符串并将其保存在我的数据库中,就像它是盐和哈希一样吗?

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

我是否过度思考这个?

1 个答案:

答案 0 :(得分:1)

您可能希望使用功能齐全的CSRF中间件(如csurf)来管理CSRF令牌,但如果您想自己生成令牌,那么任何"足够随机"价值应该有效。这样的事情可以解决问题:

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