Перехватчик токенов Struts2: защита CSRF
Я пытаюсь защитить свое веб-приложение от CSRF-атак с помощью перехватчика токенов Struts.
Проблема, с которой я сейчас сталкиваюсь, состоит в том, что наши JSP-страницы выполняют более одного вызова к серверу (хотя JSP преобразуется в JS, в JS добавляется токен распорок. Но в этом JS есть несколько запросов Ajax. Надеюсь, я проясняю себя .), поскольку токен-перехватчик проверяется только на первый запрос к серверу. Другие запросы становятся недействительными, потому что маркер распорок сбрасывается после каждой проверки.
Есть ли способ, которым я не позволяю Struts сбрасывать токен каждый раз, когда он проверяется? Есть ли другие решения, чтобы справиться с этим в перехватчике распорок.
Я тоже смотрю наtomcatcsrfprotection
модуль, я думаю, что я в конечном итоге с этой же проблемой здесь.
managepage.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>
Я только что добавил минимальный код, чтобы его было проще понять.