我有Web应用程序,它被分成两个独立的模块(客户端和服务器端)。服务器定义了REST服务,客户端调用REST服务来获取数据。我希望服务器免受CSRF攻击。因此任何客户端POST / PUT / DELETE都需要在头中传递csrf令牌,令牌值应等于会话中保存的csrfToken。
我的问题是,因为服务器生成了csrf令牌,客户端应用程序如何获取令牌值?
如果客户端在登录后发送GET请求,服务器会生成csrf令牌将其存储为会话属性并将其作为响应发送回客户端,还是更好的解决方案?
答案 0 :(得分:0)
如果你想要csrf令牌客户端,你可以得到你想要的东西吗?
总是在登陆页面上创建csrf令牌,或者在服务器端后端黑匣子逻辑中用户的第一个ajax请求...客户端意味着如果jsp那么你可以轻松编写代码,因为jsp在服务器端并且它的所有好处作为程序员我们知道......
如果在应用程序中我们使用基于js或js的框架[如extjs,dojo使用kit,angularjs,yui或任何其他],我们的视图是.html文件然后我觉得我们去着陆页....
着陆页意味着第一页......或者如果我们使用ajax,那么当用户点击我们的服务器时,用户首先会向服务器发出ajax请求...
通过第一个ajax请求或登陆页面,您可以生成一个令牌并在会话中保存为csrf令牌,在该用户的整个会话之后,您必须通过编写过滤器来检查csrf令牌...
过滤器中的必须检查用户会话是否为空且用户是登录用户,并且您的应用程序和会话的权限基础有csrf令牌...
因此,每个新用户必须通过您的目标网页[登录页面]并在服务器端获得一个会话,因此任何虚假请求都是不允许的,并且您拥有一个安全层
享受:)