小编Chr*_*mov的帖子

这是防止 Next.js 应用程序中发生 CSRF 攻击的有效方法吗

我正在构建一个 Next.js 应用程序,在其中一个页面上,我需要调用其中一个路由/api

调用此 API 路由会执行状态更改操作,因此确保调用不是来自试图冒充我的用户的攻击者非常重要。

以下面为例:

fetch('/api/grantPermissions', {
  headers: ...,
  method: 'POST',
  body: JSON.stringify({resource: 'someresourceid', permission: 'somepermission'})
})
Run Code Online (Sandbox Code Playgroud)

我注意到没有很多解决方案可以保护 Next.js API 路由免受 CSRF 攻击,所以我考虑的是以下内容:

  1. 当用户登录时,会生成一个随机的32字节十六进制字符串
  2. 它存储在会话对象中(使用iron-session)
  3. 使用 getServerSideProps(),将存储在会话中的字符串注入到需要进行 fetch 调用的页面中
  4. 当进行 fetch 调用时,CSRF 令牌会附加到请求中(例如在正文或自定义标头中)
  5. 然后路由/api/grant检查提供的 CSRF 令牌是否与会话中的相同

这是使用同步器令牌模式防止 CSRF 攻击的安全方法吗?这种方法可能会导致哪些漏洞?

http csrf next.js csrf-token

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

csrf ×1

csrf-token ×1

http ×1

next.js ×1