node.js express 框架怎么防御csrf

发布于 2022-09-06 13:05:22 字数 209 浏览 5 评论 0

express框架开发的web项目,怎么防御csrf?
看到https://github.com/expressjs/...,但项目是前后端分离的,怎么在项目中加csrftoken

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

二智少女 2022-09-13 13:05:22

CSRF库官方文档的例子修修改改就行了。

CSRF防护流程

  1. 服务端:Express返回前端页面时,在页面上注入CSRF token
  2. 浏览器端:页面请求服务端接口,带上服务端返回的CSRF token

服务端代码

服务端代码:

var cookieParser = require('cookie-parser')
var csrf = require('csurf')
var bodyParser = require('body-parser')
var express = require('express')

// 模板
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');


// CSRF中间件初始化
var csrfProtection = csrf({ cookie: true })

// create express app
var app = express()

// cookie解析
app.use(cookieParser())

// 解析参数
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

// CSRF防护
app.use(csrfProtection) 

// 访问页面,生成CSRF token,并注入页面
app.get('/index', function (req, res, next) {
  res.render('index', { csrfToken: req.csrfToken() })
})

// 请求接口,解析请求参数,获取CSRF token,进行校验(中间件完成的)
app.post('/api', function (req, res) {
  res.send('你的处理结果')
})

模板代码

预留了CSRF token的位置。

<html>
  <head>
    <title>CSRF防护</title>
  </head>
  <body>
    <h1>CSRF防护</h1>
    <p id="csrf-token"><%= csrfToken %></p>
  </body>
</html>

客户端请求

发请求时,把csrfToken加到请求参数里去就行。这里略过

痴意少年 2022-09-13 13:05:22

就用这个库,在登录的api里把token加上

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文