使用csrf令牌

Eri*_*rik 5 csrf node.js csrf-protection express

我对使用生成csrf令牌来保护我的Web应用程序感兴趣.我的问题是如何将该令牌发送回服务器:使用查询参数或http头x-csrf-token?

有什么区别

ale*_*lex 9

由于您使用的是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

UPDATE

从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

UPDATE2

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