Articles of csrf

使用csurf和react-server

我想在通用应用程序的react-server中添加csurf作为一个快速的中间件。 我想要实现的是将csrf标记添加到反应组件中窗体的隐藏input中,以维护服务器呈现的网站提供的相同csrf保护stream,但在SPA内。 这在技术上是可行的反应服务器内? 如果是这样,我怎么能通过页面(理想情况下)将响应对象中可用的csrf标记传递给反应组件?

为什么Express / Connect为每个请求生成新的CSRF令牌?

据我所知,有两种方法可以防止CSRF攻击:1) 每个会话令牌 ,2) 每个请求令牌 1)在第一种情况下,当用户会话初始化时,CSRF令牌只生成一次。 所以一次只有一个用户有效的令牌。 2)在第二种情况下,每个请求都会生成一个新的CSRF令牌,之后一个旧的无效。 由于攻击者窃取令牌(通过XSS) ,当用户转到下一页时,就会过期,从而使得难度更大。 但另一方面,这种方法使webapp不太可用。 这里有一个很好的来自security.stackexchange.com的引用: 例如,如果他们点击“后退”button,并提交新的值的forms,提交将失败,并可能用一些敌对的错误信息迎接他们。 如果他们尝试在第二个选项卡中打开资源,他们会发现会话在一个或两个选项卡中随机分配 在分析Node.js Express框架(基于Connect )的时候,我发现每个请求都会生成一个新的CSRF标记, 但是旧的标记不会失效 。 我的问题是 :为什么要在每个请求中提供新的CSRF标记,而不是使旧的无效? 为什么不只是每个会话生成一个令牌? 谢谢你,对不起我的英文!

Kraken.js CSRF处理

我有一个问题krakenjs,我是一个节点/快递新手。 krakenjs设置为默认的csrf保护(我知道如何禁用,但我不想),但我不知道如何处理csrf和避免403错误。 在ejs文件中我得到了这一行。 <input type="hidden" name="_crsf" value="<%= _csrf %>" /> 它生成适当的csrf,在那里没有问题。 这是我的路线 server.post('/isengard/fact/new', function(req,res){ var new_fact = Fact({ title : req.body.fact_title, description : req.body.fact_description, source : req.body.fact_source }); new_fact.save(function(err){ if(err) return handleError(err); var model = {status:true}; res.render('isengard/create',model); }); }); 但是当我发送表单(POST),我得到这个错误。 403 Error: Forbidden at Object.exports.error (/Users/onur/Documents/node/sage/node_modules/express/node_modules/connect/lib/utils.js:63:13) at createToken (/Users/onur/Documents/node/sage/node_modules/express/node_modules/connect/lib/middleware/csrf.js:82:55) at /Users/onur/Documents/node/sage/node_modules/express/node_modules/connect/lib/middleware/csrf.js:48:24 at csrf (/Users/onur/Documents/node/sage/node_modules/kraken-js/node_modules/lusca/index.js:112:13) at […]

node.js REST APIauthentication和oauth2

我有几个问题: 1)使用REST API既是外部API使用,又是作为骨干(或普通的js)前端的服务器端,是不是一个好习惯? 我认为编写一个REST API服务器并将其用作后端要容易得多。 2)如果我写我的webappauthentication与oauth 2标准是一个很好的方式来存储我的秘密令牌在cookie中? 我认为这会造成CSRF漏洞。 正如我看到passport.js使用cookie来存储例如Facebook或Twitter的秘密令牌…在这种情况下是什么关于CSRF?

如何在Express中生成CSRF令牌?

新手。 我正在使用ExpressJS /节点。 这是我的configuration的东西: var express = require('express'), app = express.createServer(), jade=require('jade'); // Configuration app.configure(function(){ app.set('views', __dirname + '/views'); app.use(express.logger()); app.use(express.cookieParser()); app.use(express.session({ secret: "secretive secret" })); app.set('view engine', 'jade'); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(require('stylus').middleware({ src: __dirname + '/public' })); app.use(app.router); app.use(express.static(__dirname + '/public')); app.use(express.csrf()); 我在Express目录中find了csrf.js,看到它应该生成并分配给req.body._csrf,但我不确定如何访问它。 这是csrf.js代码 module.exports = function csrf(options) { var options = options || {} […]

错误:configuration错误的csrf – Express JS 4

我正试图在现有的应用程序中启用Express 4的csrf模块。 我已经添加了下面的代码: var csrf = require('csurf') … app.use(csrf()); 我已经开始我的申请,我得到: Error: misconfigured csrf 和一个堆栈跟踪。 没有其他的。 我已经检查过文件,但是不清楚。 有人可以帮忙吗? 什么是使用这个模块所需的最低configuration?

如何在node.js / express中testing由csrf保护的端点

我已经实施了csrf(跨站请求伪造)保护,如下所示: … app.use(express.csrf()); app.use(function (req, res, next) { res.cookie('XSRF-TOKEN', req.csrfToken()); next(); }); … 这很好。 Angularjs在通过$ http服务所做的所有请求中都使用了csrf标记。 我通过我的angular度应用程序的要求很好。 我的问题是testing这些API端点。 我使用摩卡运行我的自动化testing和请求模块来testing我的API端点。 当我使用请求模块向使用csrf(POST,PUT,DELETE等)的端点发出请求时,即使正确使用了cookie等,它也会失败。 有其他人想出了解决办法吗? 有没有人需要更多的信息? testing示例: function testLogin(done) { request({ method: 'POST', url: baseUrl + '/api/login', json: { email: 'myemail@email.com', password: 'mypassword' } }, function (err, res, body) { // do stuff to validate returned data // the […]

对Express上的某些请求禁用csrfvalidation

我正在使用Express框架编写一个带有Node.js的小型Web应用程序。 我正在使用csrf中间件,但我想要禁用它的一些请求。 这是我如何将其包含在我的应用程序中: var express = require('express'); var app = express(); app.use(express.bodyParser()); app.use(express.cookieParser()); app.use(express.cookieSession({secret: 'secret'})); app.use(express.csrf()); 我想设置一个没有csrf控制的POST路由。

如何使用express.js在Ajax调用中实现CSRF保护(查找完整示例)?

我正在尝试使用express.js框架在使用node.js构build的应用程序中实现CSRF保护。 该应用程序充分利用Ajax post调用服务器。 我明白,连接框架提供了CSRF中间件,但我不知道如何在客户端Ajax post请求的范围内实现它。 关于这个在这里在其他问题发布在stackoverflow,但我还没有find一个相当完整的例子,如何从客户端和服务器端实现它。 有没有人有一个他们喜欢分享如何实施这个工作的例子? 我所见过的大多数例子都假设你在服务器端渲染表单,然后将它(连同embedded的csrf_token表单字段)一起发送到客户端。 在我的应用程序中,所有内容都通过Backbone.js呈现在客户端(包括模板)上。 所有服务器都提供JSON格式的值,这些值在客户端的Backbone.js中被各种模型使用。 根据我的理解,我需要先通过ajax检索csrf_token,然后才能使用它。 但是,我担心这从安全的angular度来看可能是有问题的。 这是一个有效的关注吗?