gpt4 book ai didi

java - Struts2 token 拦截器 : CSRF protection

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:53:15 26 4
gpt4 key购买 nike

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

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

有什么方法可以阻止 Struts 在每次验证时重置 token ?在 struts 拦截器中是否有任何其他解决方案来处理此问题。

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

管理页面.jsp:

<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:

  <action name="manageUserAccountEdit" class="ManageUserAccountEditAction">
<interceptor-ref name="csrf-protection" />
<result name="success">/pages/manageUserAccount.jsp</result>
</action>

我刚刚添加了最少的代码,以便更容易理解。

最佳答案

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

关于java - Struts2 token 拦截器 : CSRF protection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23515095/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com