我知道Cross-Site Request Forgery (CSRF)是一种攻击,它迫使用户在他们已经登录的web应用程序上执行无意的操作。
我想阻止CSRF调用我的基于Koa.js的API和表单提交。这是一个基于JWT的应用程序。
通常框架都有防止或保护CSRF的插件。但是,当您使用Koa.js时,如何防止此类CSRF攻击?Koa有没有这样做的middlewares?
发布于 2021-02-03 14:40:02
自己编写一个中间件实际上很简单(如果我有时间,我会在这里放一个例子)。基本上,流程如下:
生成一个令牌并将其保存在会话(https://www.npmjs.com/package/koa-session)中,然后将该令牌作为隐藏字段放置在表单中。提交表单时,检查隐藏字段中发布的令牌是否与会话中保存的令牌相同。不过,请确保每次请求都重新生成一个新的令牌。
需要注意的重要一点是,会话令牌必须在服务器端保存或在客户端加密,否则将毫无意义。在这种情况下,使用签名JWT令牌的Simlpy将不起作用。如果你想使用JWT令牌,你必须实现redis或者其他东西来保存(JWT-token:csrf-token)的键值对。
https://stackoverflow.com/questions/65771126
复制相似问题