使用csurf模块对GET方法的CSRF保护

时间:2017-02-21 17:53:42

标签: node.js csrf csrf-protection

我有这个GET端点,但我不确定如何调用它。我总是得到无效的csrf令牌。我的POST端点工作得很好。我没有任何问题。我只遇到GET端点问题。

const csrf = require('csurf');

router.route('/sessioncount')
  .get(csrf({ ignoreMethods: [] }), (req, res, next) => {
    sess = req.session;
    if (sess.authenticated) {
      if (sess.views) {
        sess.views++;
        res.setHeader('Content-Type', 'text/html');
        res.write('<p>Session views: ' + sess.views + '</p>');
        res.end();
      } else {
        sess.views = 1;
        res.end('Welcome, you are logged in!');
      }
    } else {
      res.setHeader('Content-Type', 'text/html');
      res.write('<p>You are not allowed to view this page. Please <a href="/api/form">log in</a></p>');
      res.end();
    }
  })

我这样称呼它,但我只猜测它

http://localhost:31337/api/sessioncount?csrf=qudszjrT-mQ5uu4qXrQXI7C_NJYlXXUIdKB0
http://localhost:31337/api/sessioncount?_csrf=qudszjrT-mQ5uu4qXrQXI7C_NJYlXXUIdKB0
http://localhost:31337/api/sessioncount?csrfToken=qudszjrT-mQ5uu4qXrQXI7C_NJYlXXUIdKB0

1 个答案:

答案 0 :(得分:0)

我通过改变这个来实现它的工作

// const csrfProtection = csrf({ cookie: true });
const csrfProtection = csrf();