CSRF脆弱性和;云中my Node.js后端的多个实例

CSRF脆弱性和;云中my Node.js后端的多个实例,node.js,csrf,csrf-protection,Node.js,Csrf,Csrf Protection,了解CSRF攻击后,我开始保护Nodejs应用程序。它目前正在云中运行。服务器的多个实例正在运行,云主机提供商使其透明 我对针对CSRF保护应用程序的理解: 使POST处理程序期望一个“数据令牌” 数据令牌是服务器端生成的,不能篡改(使用机密哈希) 为给定资源生成数据令牌,并在其他路由上被拒绝 数据令牌在首次使用后必须过期(或“刻录”) 处理数据令牌的通常方法是什么?我的想法如下: 是否将令牌存储在共享数据库中? 清除数据库中过期和烧毁的令牌 如果令牌是在服务器端生成和散列的,您可以将

了解CSRF攻击后,我开始保护Nodejs应用程序。它目前正在云中运行。服务器的多个实例正在运行,云主机提供商使其透明

我对针对CSRF保护应用程序的理解:

  • 使POST处理程序期望一个“数据令牌”
  • 数据令牌是服务器端生成的,不能篡改(使用机密哈希)
  • 为给定资源生成数据令牌,并在其他路由上被拒绝
  • 数据令牌在首次使用后必须过期(或“刻录”)
处理数据令牌的通常方法是什么?我的想法如下:

  • 是否将令牌存储在共享数据库中?
    • 清除数据库中过期和烧毁的令牌

如果令牌是在服务器端生成和散列的,您可以将它们传递给客户端,然后在服务器端检索它们,而无需将它们存储在数据库中。我认为
jsonweb令牌
身份验证原则可以给您一些想法


在我看来,您使用服务器端的限制时间戳对json对象进行加密,将其传递给客户端,客户端在发布表单时将其发送回服务器,您可以将其解密(只有您可以使用该机密进行解密)并进行压缩!您可以检索原始数据。

您好,谢谢您的输入。实际上,JWT用于身份验证。然而,CSRF的解决方案意味着发出只能使用一次的令牌。服务器的多个实例必须有一种机制来保持有效令牌的同步。@Jem CSRF令牌不一定需要一次性使用,也不一定只对一个资源有效。虽然实现这两个目标是最安全的(TM),但这需要将信息存储在数据库中,而数据库可能无法扩展。您的CSRF令牌有效期和过期期与您的身份验证令牌绑定为无状态并不是无效的。(例如,如果您的身份验证令牌是JWT,请添加一个声明,该声明是解密CSRF令牌的密钥。)