我有兴趣通过生成 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/