我有一个单页node.js FB Canvas App。每个用户操作都会触发一个AJAX POST到我的node.js HTTPS服务器,返回结果。
现在我需要一种方法来发送我在app boot上从userId创建的用户令牌(这也是一个AJAX POST,返回所有内容+用户令牌)。我通过在服务器上执行Graph API调用(出于其他原因我的启动需要)来验证是否是此用户。
Q1那么要创建令牌我应该使用什么?
Q2如何在每次AJAX调用时发送令牌:
答案 0 :(得分:2)
Q1 我认为令牌应该是唯一且安全的。这通常不是一个容易的问题。我会采取以下步骤:
Ad.1。要生成随机数,请使用crypto.randomBytes
足够大的size
参数(256就足够了),以便最大限度地减少冲突:
http://nodejs.org/api/crypto.html#crypto_crypto_randombytes_size_callback
crypto.randomBytes
应该是安全的。然而,它有一些微妙之处。例如,您必须确保您的机器具有足够的熵。当您的服务器没有键盘,鼠标或麦克风时,这可能是一个问题。您始终可以添加硬件熵生成器:
http://en.wikipedia.org/wiki/Hardware_random_number_generator
如果您不需要它是安全的,那么您可以改为使用crypto.pseudoRandomBytes
。
同样最好创建和使用自己的算法(当然基于crypto
)。例如,将当前日期添加到该数字,哈希,等等。小心不要过度。
还要记住从旧令牌中清除DB。
Q2 这并不重要。无论什么适合你。可能将它放入cookie中是最简单的解决方案。
答案 1 :(得分:1)
如果您需要此令牌来防止CSRF攻击,我建议将其发送到POST参数。