Tag: csrf

表示CSRF令牌validation

我有CSRF令牌的问题。 当我提交一个表单时,会生成一个新的XSRF-TOKEN ,但是我想我生成了两个不同的标记,我有点困惑。 还有一个称为_csrf的标记,所以我在开发人员工具(XSRF-TOKEN和_csrf)中看到两个不同的cookie, _csrf在发布后不会更改。 我想要做的是为每个post请求生成一个新的标记,并检查它是否有效。 有一件事我知道我应该为了安全而做,但是我卡住了。 这是漫长的一天,我刚刚进入Express和NodeJS。 这是我目前的设置。 var express = require('express') , passport = require('passport') , flash = require('connect-flash') , utils = require('./utils') , csrf = require('csurf') // setup route middlewares ,csrfProtection = csrf({ cookie: true }) , methodOverride = require('method-override') , bodyParser = require("body-parser") , parseForm = bodyParser.urlencoded({ extended: false }) , […]

当使用enctype =“multipart / form-data”时,我得到CSRF错误

每当我添加enctype =“multipart / form-data”到我的html表单,我得到“ForbiddenError:无效的csrf标记”如果我删除enctype,它的工作原理我发送的csrf代码是这样的:input(type =“hidden “name =”_ csrf“value = csrf_token) 我的快递文件: var express = require('express'); var session = require('express-session'); var compression = require('compression'); var cookieParser = require('cookie-parser'); var cookieSession = require('cookie-session'); var bodyParser = require('body-parser'); var methodOverride = require('method-override'); var csrf = require('csurf'); var env = process.env.NODE_ENV || 'development'; module.exports = function (app, passport) { […]

为什么在获取请求后,远程服务器响应在nodejs上不包含x-csrf-token?

我正在使用nodejs和请求插件( https://github.com/request/request )来创build代理。 路由一切正常,但我的代理服务器应该转发的其中一个服务器需要CSRF令牌。 问题是,正在发送提取请求,但服务器响应不包含x-csrf-token。 这似乎是请求插件是“swalling”这个字段。 我的意思是,这不是空的回应,不。 标题甚至不包含该字段。 我必须使用请求插件的原因。 所以切换插件是没有帮助的。 任何想法可以导致这个问题? 更新(示例代码) app.use(sIncoming, function (req, res, next) { options = { 'url': sDestination + req.url, 'ca': cas, 'jar': true,// enable cookies, 'strictSSL': true, 'headers': { accept: '*/*' } }; request(options, function (err, response, body) { if (err) onsole.error(err); else { if (typeof req.headers['x-csrf-token'] === "string") […]

forbiddenError / 403 Ajax Express Csurf – 如何正确使用Csurf?

嘿,伙计们,我已经在这一个星期,我不能弄明白。 我正在构build一个移相器游戏,并使用节点设置了一个记分板,这是我第一次使用节点,我不能完全弄清楚如何使用csurf,因为文档非常混乱。 ForbiddenError: invalid csrf token at verifytoken (/Users/jorybraun/web/highscore/node_modules/csurf/index.js:269:11) at csrf (/Users/jorybraun/web/highscore/node_modules/csurf/index.js:97:7) at Layer.handle [as handle_request] (/Users/jorybraun/web/highscore/node_modules/express/lib/router/layer.js:95:5) at trim_prefix (/Users/jorybraun/web/highscore/node_modules/express/lib/router/index.js:312:13) at /Users/jorybraun/web/highscore/node_modules/express/lib/router/index.js:280:7 at Function.process_params (/Users/jorybraun/web/highscore/node_modules/express/lib/router/index.js:330:12) at next (/Users/jorybraun/web/highscore/node_modules/express/lib/router/index.js:271:10) at /Users/jorybraun/web/highscore/app.js:43:5 at Layer.handle [as handle_request] (/Users/jorybraun/web/highscore/node_modules/express/lib/router/layer.js:95:5) at trim_prefix (/Users/jorybraun/web/highscore/node_modules/express/lib/router/index.js:312:13) 每次我尝试从索引路由发送一个jquery post请求到我的路由得分路由时,我得到一个403错误。 我真的很想限制对路由的访问,所以除非你提交内部的ajax请求,否则你不能访问它们。 所以这里是我的app.js文件 // app.js var mongodb = require('mongodb'); var monk = require('monk'); var credentials = […]

在将路由拆分成不同的文件/模块时,得到“ForbiddenError:无效的csrf令牌”

我在快速项目中使用csurf 。 我有3个文件: app.js – 主入口点 routes / index.js – 索引路由 routes / users.js – 用户路由 它是使用快速应用程序生成器时的标准样板。 我在index.js有一个路由: router.get('/', csrfProtection, function(req, res, next) { res.render('index', { csrfToken: req.csrfToken() }); }); 此路线的页面包含具有带csrf标记的隐藏字段的表单: input(name='_csrf', type='hidden', value='#{csrfToken}') 所有工作正常,我可以看到来源中的csrf标记。 当表单被提交时,它被处理在routes / users.js中购买路由: router.post('/login', csrfProtection, function(req, resp) { if(!validator.isAlphanumeric(req.username)) console.log('Not alphanumeric'); … }); 看起来问题是两个文件必须创build新的csrf实例和csrfToken 。 在这两个path文件的头部,我需要他们这样的: var csrf = require('csurf'); […]

csurf AJAX调用 – 无效的CSRF令牌

我使用快速中间件csurf进行CSRF保护。 如果我将它与表单一起使用,将令牌放入隐藏字段中,路由后面的操作就起作用。 现在我想做一个简单的AJAX调用,但是csurf说它是无效的。 AJAX调用: $('.remove').on('click', function () { var csrf = $(this).attr('data-csrf'); $.ajax({ type: 'DELETE', url: '/user/' + $(this).attr('data-id'), data: { _csrf: csrf }, success: function (data) { //….. } }); }); 而在视图中的部分: <td class="uk-table-middle"> <button data-id="{{ _id }}" data-csrf="{{ csrfToken }}" class="uk-button-link uk-text-large remove"> <i class="uk-icon-remove"></i> </button> </td> 而从中间件的init: import * as csurf from […]

无效的CSRF令牌错误(express.js)

我正在使用node 6.5.0和npm 3.10.3 。 当我尝试将用户login到网站时,出现此invalid csrf token错误。 { ForbiddenError: invalid csrf token at csrf (/Users/Documents/web-new/node_modules/csurf/index.js:113:19) 在redis中存储会话的login不需要csurf模块( https://github.com/expressjs/csurf )。 使用csurf模块,会话ID已经存储在redis中,但是我无法将正确的响应返回给客户端以login用户。 我正在使用Angular2和node / express。 据我所知,Angular2在使用HTTP服务时默认支持CookieXSRFStrategy的CSRF / XSRF,所以我只需要在node / express端configuration一些东西。 使用webpack-dev-server的Angular2应用程序在localhost:3000上运行,而节点/ express服务器在localhost:3001上运行。 我支持CORS。 我能够在localhost:3000 devtools中看到名为XSRF-TOKEN cookie。 你可以build议我怎么解决这个错误? //cors-middleware.js var corsOptions = { origin: 'http://localhost:3000', credentials:true } app.use(cors(corsOptions)); app.use(function(req, res, next) { res.setHeader('Content-Type','application/json'); next(); }) }; //index.js import path […]

CSRF 403禁止 – 无效的CSRF令牌

我遇到了Node Express和CSurf的问题 – 403(Forbidden)csrf令牌无效。 通过其他的答案看,并试图find一切,我可以通过searchfind,我只是无法克服这一点。 我在邮递员testing了API,它工作得很好。 当我尝试在login表单上使用它时,它不起作用。 后端代码: var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); // var session = require('client-sessions'); var session = require('express-session'); var flash = require('connect-flash'); var csrf = require('csurf'); var cors = require('cors'); //======== newly […]

如何启用节点上的csrfexpression式为graphql和graphiql与例如lusca?

有一个节点与csrf lusca快递服务器,我想启用csrf也为graphql和graphiql,但如何做到这一点? const csrf = require('lusca').csrf() const graphqlExpress = require('graphql-server-express').graphqlExpress const graphiqlExpress = require('graphql-server-express').graphiqlExpress server.use((req, res, next) => { csrf(req, res, next) } }) server.use('/graphql', (req, res, next) => { graphqlExpress( () => { const query = req.query.query || req.body.query; return { schema, context: Object.assign({ user }, req.context), debug: false, formatError(e) { console.log(e) }, } […]

如何正确configurationBrowsersync代理后端

我正在努力Browsercync(也许一些中间件?)的正确configuration? 我的configuration是这样的: local.example.com它是通过/etc/hostsconfiguration的我的本地地址。 devel.example.com这是我们公司的开发环境(后端)。 staging.example.com这是我们公司的分段环境(后端)。 由于我是UI开发人员,我想使用本地代码,但是需要使用后端环境。 我正在使用gulp来build立我的项目等。它也有任务运行browser-sync和监视文件的变化。 但是,当然,现在有来自后端的Cookie域的问题。 CSRF令牌cookie域由浏览器设置为当前使用的后端。 我努力了: 使用中间件http-proxy-middlewareconfiguration: server: { baseDir: './build', middleware: [ proxyMiddleware('/api', { target: 'http://devel.example.com', changeOrigin: true, }) ] ] 但是我遇到的问题是,它在浏览器控制台中显示非透明的redirect。 我认为它会这样工作,代理将掩盖这些请求浏览器将认为所有请求和响应来自local.example.com 。 但它似乎不是这样工作(或者我configuration不好)。 这个解决scheme也是一个大问题,它以某种方式将我的POST HTTP请求更改为GET (WTF ?!)。 在browser-sync proxy选项中使用构build。 在许多教程中,我看到使用proxy选项与server选项,但似乎不工作了。 所以我试图用serveStatic来使用它: serveStatic: ['./build'], proxy: { target: 'devel.example.com', cookies: { stripDomain: false } } 但是这根本不起作用 我会真正appriciate在这个话题的任何帮助。 谢谢