我有一个web应用程序,它被分为两个独立的模块(客户端和服务器端)。服务器定义了rest服务,客户端调用rest服务来获取数据。我想让服务器免受csrf攻击。因此,任何客户端post/put/delete都需要在头中传递csrf令牌,并且令牌值应该等于会话中保存的csrftoken。我的问题是,既然csrf令牌是由服务器生成的,那么客户端应用程序如何获得令牌值?客户端登录后是否应该发送get请求,服务器生成csrf令牌将其存储为会话属性并将其发送回客户端作为响应,或者是否有更好的解决方案?
jgwigjjp1#
它取决于你想要什么,如果你想csrf令牌客户端与否?csrf令牌总是在登录页或服务器端后端黑盒逻辑中用户的第一个ajax请求上创建。。。客户端意味着如果使用jsp,那么您就可以轻松地编写代码,因为jsp位于服务器端,作为程序员,它的所有好处我们都知道。。。如果在应用程序中我们使用js或基于js的框架[如extjs、dojo Take kit、angularjs、yui或任何其他]并且我们的视图是.html文件,那么我觉得我们使用的是登录页。。。。登录页是指第一页。。。或者如果我们使用ajax,那么当用户点击我们的服务器时,用户对服务器的第一个ajax请求。。。通过第一个ajax请求或登录页,您可以生成一个令牌,并在会话中保存为csrf令牌。在该用户的整个会话之后,您必须通过编写筛选器来检查csrf令牌。。。在过滤器必须检查用户会话不为空,用户是登录用户和权限的基础上,您的应用程序和会话有csrf令牌。。。因此,每个新用户都必须通过您的登录页[login page],并在服务器端获得一个会话,因此任何虚假请求都是不允许的,并且您拥有一个安全层享受:)
1条答案
按热度按时间jgwigjjp1#
它取决于你想要什么,如果你想csrf令牌客户端与否?
csrf令牌总是在登录页或服务器端后端黑盒逻辑中用户的第一个ajax请求上创建。。。
客户端意味着如果使用jsp,那么您就可以轻松地编写代码,因为jsp位于服务器端,作为程序员,它的所有好处我们都知道。。。
如果在应用程序中我们使用js或基于js的框架[如extjs、dojo Take kit、angularjs、yui或任何其他]并且我们的视图是.html文件,那么我觉得我们使用的是登录页。。。。
登录页是指第一页。。。或者如果我们使用ajax,那么当用户点击我们的服务器时,用户对服务器的第一个ajax请求。。。
通过第一个ajax请求或登录页,您可以生成一个令牌,并在会话中保存为csrf令牌。在该用户的整个会话之后,您必须通过编写筛选器来检查csrf令牌。。。
在过滤器必须检查用户会话不为空,用户是登录用户和权限的基础上,您的应用程序和会话有csrf令牌。。。
因此,每个新用户都必须通过您的登录页[login page],并在服务器端获得一个会话,因此任何虚假请求都是不允许的,并且您拥有一个安全层
享受:)