node.js - 有选择地在 sailsjs 或expressjs 应用程序的路由上应用 CSRF token 约束

标签 node.js express sails.js

是否可以有选择地对某些请求/路由应用 CSRF token 检查?如果我想申请我的申请中使用的 6 个 post 请求中的 4 个,可以吗? CSRF token 与 GET 请求有关联吗?正如 sailsjs 的引用文档所述,“启用 CSRF 保护后,对 Sails 服务器的所有非 GET 请求都必须附带一个特殊 token ,该 token 由查询字符串中的 header 或参数标识,或者HTTP 正文。”与普通的基于expressjs的应用程序一样吗?​​

最佳答案

我发现的关于“选择性”启用/禁用 CSRF token 的唯一选项是 this documentation ,这允许禁用一种“黑名单”csrf。所以你的 config 文件夹中的 csrf.js 看起来像这样:

module.exports.csrf = {
  // it says comma delimited list in the docs, but not sure if it has to look exactly like this,
  // the docs seem to be a bit unclear
  routesDisabled: "POST /model,DELETE /model/:id" 
};
<小时/>

CSRF 通常与 GET 请求无关,因为这些请求应该没有任何副作用(如果符合 REST)。 CSRF token 是一种真实性 token ,用于向 Web 服务器/后端证明修改请求(即发布、删除),表明您(访问者/用户)没有被其他人出于恶意(例如,伪造的表单)所愚弄。一个简单的重命名操作,进而尝试在幕后删除您的帐户)。

因此,csrf token 证明该表单是由您想要向其发出请求的服务器/后端生成的。

我不太确定有关express.js 应用程序的csrf token 。 但由于 sails.js 是基于express.js 的,因此它可能是相同的机制。

关于node.js - 有选择地在 sailsjs 或expressjs 应用程序的路由上应用 CSRF token 约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31660561/

相关文章:

node.js - GraphQL 嵌套突变 + Sequelize

c++ - 等同于在 C++ 中重新解释 Node.js fii

node.js - request.ip 和 request.headers ['x-forwarded-for' 之间的区别]

javascript - try catch 模式比先错误更好吗?

node.js - Express 服务器为尚未定义的路由返回 200

node.js - 尽管以 root 身份运行所有内容,为什么 aws 代码部署会抛出 "No passwd entry for user ' ec2-user'"错误?

linux - 哪个 Linux 发行版更适合 Node.js Web 服务器

javascript - 使用 Sails.js 如何制作/users/me 与关联一起使用的路线?

node.js - 在 SailsJS 中维护模型更新历史

javascript - Sails.js 套接字。好的一面和坏的一面。与 socket.io 的区别