首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Struts2令牌拦截器: CSRF保护

Struts2令牌拦截器: CSRF保护
EN

Stack Overflow用户
提问于 2014-05-07 10:20:49
回答 1查看 11.9K关注 0票数 8

我试图通过使用struts令牌拦截器来保护我的web应用程序免受CSRF攻击。

我现在面临的问题是,我们的JSP页面对服务器进行多个调用(当JSP转换为JS时,这个JS中向JS.But添加了struts令牌,有多个Ajax请求。我希望我能说清楚。),因为令牌拦截器只对服务器的第一个请求进行了验证。其他请求正在失效,因为struts令牌在每次验证后被重置。

是否有一种方法可以阻止Struts每次验证时重置令牌?在struts拦截器中是否有其他解决方案来处理这个问题。

我也在看tomcatcsrfprotection模块,我想我在这里也会遇到同样的问题。

managepage.jsp**:**

代码语言:javascript
复制
<s:token />
<script type="text/javascript">
var strutsToken = "<s:property value="#session['struts.tokens.token']" />";
var requestParams = {mainAction: 'loadGroups','struts.token.name': 'token' , token:strutsToken};

Ext.Ajax.request({
              url: 'manageUserAccount.action',
              params: Ext.urlEncode(requestParams),
              disableCaching: true,
              success: this.actionCallback
              });



//loading widgets

var requestParams = {mainAction: 'loadusers','struts.token.name': 'token' , token:strutsToken};

Ext.Ajax.request({
              url: 'manageUserAccount.action',
              params: Ext.urlEncode(requestParams),
              disableCaching: true,
              success: this.actionCallback
              });

</script>

Struts.xml**:**

代码语言:javascript
复制
  <action name="manageUserAccountEdit" class="ManageUserAccountEditAction">
     <interceptor-ref name="csrf-protection" /> 
     <result name="success">/pages/manageUserAccount.jsp</result>
 </action>

我刚刚添加了最低限度的代码,这样理解它就更容易了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-07 12:41:31

您可以使用我的答案中的代码为Unable to implement Struts 2 token interceptor with hyperlink创建一个返回令牌的操作。您可以使用任何结果streamjsondispatcher作为Ajax成功回调结果返回令牌。您可以在jQuery Ajax - issue returning JSON value中找到一个例子。现在,您可以使用令牌来发出Ajax请求。每次需要发出新请求时,都应该调用令牌操作来获得新的令牌。将令牌用作请求的参数,并将令牌拦截器置于操作之前。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23515095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档