在CSRF保护下构buildnode.js服务器,移动应用程序如何接收CSRF令牌?

我使用node.js来表示构build一个简单的服务器,其中CSRF正在通过快速框架实现。

app.use(express.csrf()); app.use(function(req, res, next){ res.locals.token = req.session._csrf; res.locals.year = new Date().getFullYear(); next(); }); 

Connect CSRF中间件自动生成req.session._csrf标记,并且该函数将其映射到res.locals.token,以便从ejs创build模板。 这适用于Web应用程序。

但是当涉及到我的android的移动应用程序,例如login,只发送用户名和密码没有CSRF令牌将导致服务器拒绝请求。

因为前面的代码只适用于web模板,所以我的问题是如何在android应用程序中接收这个令牌

最好的rgds西安

如果只是您需要保护的login页面,那么您可以先轻松地为login页面(返回JSON或XML)进行GET,然后以这种方式获取CSRF标记。

不过,我认为CSRF对移动设备不是问题。 你可以做的是使用cookiesession中间件在会话上设置一个标志来表明这种types的客户端不需要CSRF。

然后使用这个答案禁用Express上的某些请求的csrfvalidation来打开或closuresCSRF取决于该标志是否存在于Cookie中。

另外,您的移动应用程序可以添加一个标志,而不是使用cookie的方式表示它不需要CSRF。 但是,这意味着黑客只要知道这个标志就可以绕过你的CSRF保护。