我正在构建一个Next.js应用程序,在其中一个页面上,我需要调用一个/api
路由。
调用此API路由执行状态更改操作,因此必须确保调用不是来自试图模拟我的用户的攻击者。
以以下为例:
fetch('/api/grantPermissions', {
headers: ...,
method: 'POST',
body: JSON.stringify({resource: 'someresourceid', permission: 'somepermission'})
})
我注意到保护Next.js API路由不受CSRF攻击的解决方案不多,所以我考虑的是:
/api/grant
路由检查所提供的CSRF令牌是否与会话中的令牌相同。这是使用同步器令牌模式防止CSRF攻击的安全方法吗?这种方法会导致哪些漏洞?
发布于 2022-08-25 01:03:05
我会首先考虑如果为会话cookie设置SameSite=Lax足够好
这是使用同步器令牌模式防止CSRF攻击的安全方法吗?
四个可能的改进点:
iron-session
使用无状态会话,这意味着后端没有状态。这听起来像是双提交Cookie模式的用例。然而,iron-session
似乎是使用加密和签名的cookie实现的。考虑到您信任铁会话,我认为如果您记得在检查会话cookie中的CSRF令牌是否与自定义请求标头中的CSRF令牌匹配之前,同步器令牌模式应该可以工作。我喜欢你的做法:
X-CSRF-TOKEN
,X-XSRF-TOKEN
或XSRF-TOKEN
都是常用。如果您考虑了这四点改进,我相信您有一个更安全的同步器令牌模式的实现。然而,考虑到您的风险承受能力,如果它足够安全,我就不会回答。如果您还没有看到OWASP CSRF手册,请查看它。
这种方法会导致哪些漏洞?
iron-session
。关于保护Next.js API路由不受CSRF攻击的现有解决方案:
祝好运!
https://stackoverflow.com/questions/73313645
复制相似问题