在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ node.js express 框架怎么防御csrf

node.js express 框架怎么防御csrf

express框架開發(fā)的web項目,怎么防御csrf?
看到https://github.com/expressjs/...,但項目是前后端分離的,怎么在項目中加csrftoken

回答
編輯回答
柒喵

CSRF庫官方文檔的例子修修改改就行了。

CSRF防護流程

  1. 服務(wù)端:Express返回前端頁面時,在頁面上注入CSRF token。
  2. 瀏覽器端:頁面請求服務(wù)端接口,帶上服務(wù)端返回的CSRF token

服務(wù)端代碼

服務(wù)端代碼:

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())

// 解析參數(shù)
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() })
})

// 請求接口,解析請求參數(shù),獲取CSRF token,進行校驗(中間件完成的)
app.post('/api', function (req, res) {
  res.send('你的處理結(jié)果')
})

模板代碼

預(yù)留了CSRF token的位置。

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

客戶端請求

發(fā)請求時,把csrfToken加到請求參數(shù)里去就行。這里略過

2018年2月12日 19:31
編輯回答
尋仙

就用這個庫,在登錄的api里把token加上

2018年7月23日 13:41