根据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_HASHED + SALT).digest("hex")
我是否过度思考这个?
答案 0 :(得分:1)
您可能希望使用功能齐全的CSRF中间件(如csurf)来管理CSRF令牌,但如果您想自己生成令牌,那么任何"足够随机"价值应该有效。这样的事情可以解决问题:
const crypto = require('crypto');
var token = crypto.randomBytes(64).toString('hex');