2015-01-15 162 views
1

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

如果客户端登录后发送GET请求,服务器生成csrf令牌将其存储为会话属性,并将其发送回客户端作为响应,或者有更好的解决方案吗?将csrf令牌传递给客户端应用程序

+0

CSRF保护在REST协议中不起任何作用。 – holmis83

+0

@ holmis83 https://www.owasp.org/index.php/REST_Security_Cheat_Sheet#Protect_against_cross-site_request_forgery – sp00m

+0

@ sp00m在该页面上有许多蹒跚。不过,也许我误解了OP的“REST”的含义。 – holmis83

回答

0

它最多你想要什么,如果你想csrf令牌客户端或不?

CSRF令牌总是登陆页面或用户在服务器端后台黑匣子逻辑首先Ajax请求上创建...

客户端意味着如果JSP那么你可以很容易写代码,因为JSP是在服务器端和所有的典型应用该类超支作为我们知道的程序员...

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

登陆页面意味着第一页...或者如果我们使用ajax,那么首先ajax请求由用户到服务器当用户点击我们的服务器...

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

过滤器必须检查用户会话不是null,用户登录的用户和权限基础上,你的应用程序和会话已CSRF令牌......

使每个新用户必须与您的着陆页传递[登录页面]并在服务器端获得一个会话,因此不允许任何虚假请求和一个安全层

享受:)

+0

问题是如何与REST应用程序共享在UI页面上创建的令牌。会话策略如何处理同一用户在浏览器中打开两个不同的选项卡?就ajax策略而言,可以制作一个表单来发送来自恶意网站的Ajax请求。 – 11thdimension

+0

对于需要开发逻辑..我正在与REST应用程序..因为需要应用逻辑来创建令牌字符串...你也可以申请弹簧安全与休息应用程序 – Minesh

+0

我不明白你最后的评论,但是Spring安全性如何与单独的UI应用程序共享它的CSRF令牌?假设它在nodejs(Expressjs)上运行。 – 11thdimension

相关问题