分享一个实用Nodejs npm包:koa-csrf


本文摘自PHP中文网,作者青灯夜游,侵删。

本篇文章给大家分享一个实用Nodejs npm包---koa-csrf。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

koa-csrf是一个用于防止csrf攻击的koa中间件。

当然关于什么是csrf、以及如何预防这里就不赘述了,有兴趣的可以阅读understanding-csrf。egg处理csrf方案。

首先我们看个简单示例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

const router = require('koa-router')();

const CSRF = require('koa-csrf');

const csrfMD = new CSRF({

  invalidSessionSecretMessage: 'Invalid session secret',

  invalidTokenMessage: 'Invalid CSRF token',

  invalidTokenStatusCode: 403,

});

 

router

  .get('/',csrfMD,async (ctx, next) => {

    ctx.cookies.set('cid','1234', cookieSet);

    // 下发csrf token

    await ctx.render('index', {

      title: 'EJS !',

      csrf: ctx.csrf

    });

  })

  .post('/post', csrfMD ,async (ctx, next) => {

    console.log(ctx.method);

    ctx.session.email = ctx.request.body.email;

    ctx.session.name = ctx.request.body.name;

    ctx.redirect('/');

  })

 

module.exports = router;

简单理解其工作流程:

客户端请求页面:

  • 服务端为用户当前 session 生成 secret 值,并存到 session 里;
  • 根据secret生成csrf token,存到ctx._csrf;
  • 下发csrf token到客户端

用户写操作,比如发送post 请求时:

  • 服务端获取客户端传递过来的csrf token;
  • 服务端从当前 session找到 secret 值;
  • 服务器用secret与接收的csrf token进行校验;

koa-csrf

koa-csrf中关于token的创建、校验逻辑都是在这个csrf包里。

阅读剩余部分

相关阅读 >>

深入浅析with的使用

npm和yarn安装node-sass的问题解决方法介绍

node.js“多线程”如何处理高并发任务?

node.js+koa搭建一个简单后台管理系统

node.js 安装配置

nodejs怎么实现对图片进行批量裁剪?

详解node.js中的quic协议

express中间件body-parser的实现方法

exports和module.expors之间有什么区别及联系?

node.js中如何创建和提取zip文件?方法介绍

更多相关阅读请进入《node.js》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...