将csrf令牌传递给客户端应用程序

时间:2015-01-15 13:46:49

标签: java angularjs rest spring-security csrf

我有Web应用程序,它被分成两个独立的模块(客户端和服务器端)。服务器定义了REST服务,客户端调用REST服务来获取数据。我希望服务器免受CSRF攻击。因此任何客户端POST / PUT / DELETE都需要在头中传递csrf令牌,令牌值应等于会话中保存的csrfToken。 我的问题是,因为服务器生成了csrf令牌,客户端应用程序如何获取令牌值?

如果客户端在登录后发送GET请求,服务器会生成csrf令牌将其存储为会话属性并将其作为响应发送回客户端,还是更好的解决方案?

1 个答案:

答案 0 :(得分:0)

如果你想要csrf令牌客户端,你可以得到你想要的东西吗?

总是在登陆页面上创建csrf令牌,或者在服务器端后端黑匣子逻辑中用户的第一个ajax请求...

客户端意味着如果jsp那么你可以轻松编写代码,因为jsp在服务器端并且它的所有好处作为程序员我们知道......

如果在应用程序中我们使用基于js或js的框架[如extjs,dojo使用kit,angularjs,yui或任何其他],我们的视图是.html文件然后我觉得我们去着陆页....

着陆页意味着第一页......或者如果我们使用ajax,那么当用户点击我们的服务器时,用户首先会向服务器发出ajax请求...

通过第一个ajax请求或登陆页面,您可以生成一个令牌并在会话中保存为csrf令牌,在该用户的整个会话之后,您必须通过编写过滤器来检查csrf令牌...

过滤器中的

必须检查用户会话是否为空且用户是登录用户,并且您的应用程序和会话的权限基础有csrf令牌...

因此,每个新用户必须通过您的目标网页[登录页面]并在服务器端获得一个会话,因此任何虚假请求都是不允许的,并且您拥有一个安全层

享受:)