【问题标题】:Is there a way to CSRF protection if its coming from within the Express server itself?如果 CSRF 来自 Express 服务器本身,有没有办法保护它?
【发布时间】:2021-05-25 23:48:58
【问题描述】:

我有一个带有端点的快速服务器,在其功能期间需要向同一服务器上的另一个端点发送请求,现在我在这个端点上有 CSRF 保护,不想去删除它,或者尝试制作获取请求中的数据参数,那么当它是内部请求时,有什么办法可以跳过 CSRF 保护?

【问题讨论】:

    标签: node.js express csrf


    【解决方案1】:

    看看这个例子,

    var cookieParser = require('cookie-parser')
    var csrf = require('csurf')
    var bodyParser = require('body-parser')
    var express = require('express')
    
    // create express app
    var app = express()
    
    // create api router
    var api = createApiRouter()
    
    // mount api before csrf is appended to the app stack
    app.use('/api', api)
    
    // now add csrf and other middlewares, after the "/api" was mounted
    app.use(bodyParser.urlencoded({ extended: false }))
    app.use(cookieParser())
    app.use(csrf({ cookie: true }))
    
    app.get('/form', function (req, res) {
      // pass the csrfToken to the view
      res.render('send', { csrfToken: req.csrfToken() })
    })
    
    app.post('/process', function (req, res) {
      res.send('csrf was required to get here')
    })
    
    function createApiRouter () {
      var router = new express.Router()
    
      router.post('/getProfile', function (req, res) {
        res.send('no csrf to get here')
      })
    
      return router
    }
    

    参考:https://expressjs.com/en/resources/middleware/csurf.html#ignoring-routes

    【讨论】:

      猜你喜欢
      • 2010-12-11
      • 1970-01-01
      • 2020-12-10
      • 1970-01-01
      • 2020-12-02
      • 2016-01-15
      • 2020-04-02
      • 1970-01-01
      • 2019-11-26
      相关资源
      最近更新 更多