Sto provando a proteggere la mia applicazione Web dagli attacchi CSRF utilizzando l'intercettore token puntone.Interceptor token Struts2: protezione CSRF
Il problema che sto affrontando in questo momento è nelle nostre pagine JSP rende più di una chiamata al server (Mentre JSP viene convertito in un JS puntoni token viene aggiunto alla JS.But in questo JS ci sono più richiesta Ajax. Spero di mi sto chiarendo.), a causa dell'intercettore di token, solo la prima richiesta al server viene convalidata. Altre richieste vengono invalidate perché il token struts viene ripristinato dopo ogni convalida.
C'è un modo per impedire a Struts di reimpostare il token ogni volta che viene convalidato? Esistono altre soluzioni per gestire questo in interceptor dei montanti.
Sto anche guardando il modulo tomcatcsrfprotection
, credo che finirò con lo stesso problema anche qui.
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>
Ho appena aggiunto il codice minimo in modo che la comprensione sarà più facile.
Che cosa intendi * le pagine jsp effettuano più di una chiamata al server *? –
Ho bisogno di fare più richieste Ajax utilizzando lo stesso token nella pagina del client. – Mok
Mentre jsp viene convertito in js, un token puntone viene aggiunto a js. In questo js ci sono più richieste Ajax. Spero di essere chiaro. – Mok