大前端

Egg.js学习与实战系列 · Post请求`csrf toke

2021-10-21  本文已影响0人  天問_专注于大前端技术

在使用axios请求egg.js封装的post接口时出现missing csrf tokeninvalid csrf token。踩过坑的新手估计不在少数,本篇记录一下解决方法。

EggJS-Post

问题原因

Web 应用中存在很多安全风险,这些风险会被黑客利用,轻则篡改网页内容,重则窃取网站内部数据,更为严重的则是在网页中植入恶意代码,使得用户受到侵害。

常见的安全漏洞如下:

对于这些风险,Egg框架本身内置了丰富的解决方案。回归本题,其中出现missing csrf token就是因为CSRF 的防御方案

解决方案如下:

关闭配置(不推荐)

// config/config.default.js

exports.security = {
  csrf: {
    enable: false,
  },
};

注意: 框架的安全插件是默认开启的。除非清楚的确认后果,否则不建议擅自关闭安全插件提供的功能。

配置请求headers

// config/config.default.js

exports.security = {
  csrf: {
    enable: true,
    headerName: 'token',
  },
};

解释: 通过 headertoken 字段传递 CSRF token,默认字段为 x-csrf-token

// 例:

async function getData(data) {
  try {
    let res = await axios({
      url: "http://127.0.0.1:7001/api/test/list",
      method: 'POST',
      data,
      headers: {
        "token": 'xxxxxxxxx',
      }
    });
    console.log(res.data)
  } catch (e) {
    console.log(e)
  }
}
headers: {
    "token": 'xxxxxxxxx',
    "Cookie": 'csrfToken=xxxxxxxxx',
}

参考文档:


《Egg.js学习与实战》系列


欢迎访问:个人博客地址

上一篇下一篇

猜你喜欢

热点阅读