node.js - csrf token 使用

标签 node.js express csrf csrf-protection

我有兴趣通过生成 csrf token 来保护我的 Web 应用程序。我的问题是我需要如何将该 token 发送回服务器:使用查询参数或 http header x-csrf-token ?

有什么区别

最佳答案

由于您使用的是 Express,因此可以使用它的 CSRF 中间件(通过 Connect):http://www.senchalabs.org/connect/csrf.html

您可以在此处查看评论来源:https://github.com/senchalabs/connect/blob/master/lib/middleware/csrf.js

您需要做的就是包含该中间件,然后在您的 POST 表单(或 PUT 等任何改变状态的请求)中将变量 _csrf 设置为具有值 req.session ._csrf.

在此处检查示例:https://github.com/senchalabs/connect/blob/master/examples/csrf.js

更新

从 Connect 2.9.0 开始,您必须使用 req.csrfToken() 而不是 req.session._csrf

完整示例:https://github.com/senchalabs/connect/blob/master/examples/csrf.js

提交:https://github.com/senchalabs/connect/commit/70973b24eb1abe13b2da4f45c1edbb78c611d250

更新 2

connect 中间件被分成不同的模块(和相关的 repos),你可以在这里找到它们(包括 CSRF 模块):https://github.com/senchalabs/connect#middleware

关于node.js - csrf token 使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10719804/

相关文章:

node.js - Socket.IO连接错误

javascript - Node.js 多方上传不起作用

javascript - Spring CSRF 多部分不工作

使用 Backbone.js 发布到 Yii PHP 框架

javascript - 操作新实例后变量失去原始值

mysql - 如何使用 Node.js Lambda 函数与 RDS MySQL 实例交互?

node.js - foo.find(...).execFind 不是函数 - Mongoose 模式模型

javascript - 使用 hapi/Joi 的 Express JS 表单验证无法正确验证表单数据

node.js - 无法使用 Node.js 和 Express 框架读取帖子参数

php - Laravel: POST -> Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException