相关疑难解决方法(0)

如何为跨域请求实现csrf保护

我有两个Web应用程序,一个用于AngularJS中的Web UI,另一个用于Java中的REST Web服务.两者都部署在不同的域上.

应用程序使用cookie进行身份验证.每当用户输入有效的用户名和密码时,服务器返回包含令牌的仅http cookie,并且cookie将在所有请求中传递.我在两个应用程序上启用了CORS,这就是会话cookie正常工作的原因.

现在,我正在尝试为此添加CSRF保护.我试图使用csrf cookie,在服务器中将发送csrf cookie(而不是httponly)作为REST响应的一部分,UI将从cookie读取值并将其传递到csrf令牌头中以用于其他REST调用.

我面临的这种方法的问题是,由于服务器位于不同的域中,我无法使用AngularJs中的$ cookies读取cookie.有没有办法读取该cookie的值?如果没有,那么我可以用其他方式实现CSRF吗?

我还尝试在浏览器中在Web UI上实现csrf cookie的创建,但是浏览器不会将cookie作为其在不同域中的web服务发送.

那么,我的问题是如何为这种情况实施csrf保护?

cookies csrf cross-domain csrf-protection angularjs

14
推荐指数
2
解决办法
7423
查看次数

ExpressJS中的CSRF保护

来自http://sporcic.org/2012/10/csrf-with-nodejs-and-express-3:

app.use(express.csrf());
app.use(function(req, res, next){
    res.locals.token = req.session._csrf;
    next();
});
app.use(app.router);
Run Code Online (Sandbox Code Playgroud)

为了利用上述保护,这是否意味着我应该将隐藏的_csrf隐藏输入放在我的所有表单中,包括仅限管理员的页面?

csrf express

2
推荐指数
2
解决办法
3521
查看次数