有选择地在sailsjs或expressjs app的路由上应用CSRF令牌约束

时间:2015-07-27 18:28:02

标签: node.js express sails.js

是否可以有选择地对某些请求/路由应用CSRF令牌检查?如果我想申请申请中使用的6个帖子中的4个,是否可以? CSRF令牌与GET请求有任何关联吗?作为sailsjs的参考文档说"当启用CSRF保护时,对Sails服务器的所有非GET 请求必须附带一个特殊令牌,由标题或参数标识。查询字符串或HTTP正文。"基于普通expressjs的应用程序是否相同?

1 个答案:

答案 0 :(得分:1)

我发现有关“选择性地”启用/禁用CSRF令牌的唯一选项是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令牌是一个真实性令牌,用于证明网络服务器/后端的修改请求(即发布,删除),您(访客/用户)不会被其他有恶意的人欺骗(例如像伪造的表格)一个简单的重命名操作,然后尝试在幕后删除您的帐户。)

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

我对express.js应用程序的csrf令牌不太确定。 但由于sails.js基于express.js,它可能是相同的机制。