Nestjs入门篇2 csrf

跨站请求伪造(CSRF或XSRF)是一种恶意利用的网站,未经授权的命令是传播从一个web应用程序的用户信任。
减轻这种攻击可以使用csurf包。这里有篇文章浅谈cnode社区如何防止csrf攻击

安装 csurf

npm i --save csurf

csurf要配合cookie-parser使用
在入口文件新增

// main.ts
import * as csurf from 'csurf';
import * as cookieParser from 'cookie-parser'
...
app.use(cookieParser())
app.use(csurf({ cookie: true }));
app.use((err, req, res, next) => {
    if (err.code !== 'EBADCSRFTOKEN') return next(err)
    // handle CSRF token errors here
    res.status(403)
    res.json({
      code : 403,
      msg:'invalid csrf token'
    })
  })

然后可以用req.csrfToken() 获取token后 在前端的请求头上带上'CSRF-Token': token进行验证

对于cnode社区 csrf的一些思考

[浅谈cnode社区如何防止csrf攻击] (https://cnodejs.org/topic/5533dd6e9138f09b629674fd) 在练习nestjs的时候看到这个文章,对token放在参数上提交有疑问,因为别人可以通过获取token后在form表单提交接口,这样也可以通过验证。

csrf的另一种防范

SameSite Cookie,防止 CSRF 攻击

你可能感兴趣的:(Nestjs入门篇2 csrf)