2013-04-24 4 views
16

Stiamo scrivendo un'app per dispositivi mobili iOS in ogg-c che pubblica post sulla nostra app server ASP.NET MVC. Su iPhone, lo stack HTTP (e i cookie, ecc.) Sembrano essere condivisi con Safari. Questo ci lascia aperti agli attacchi XSRF, quindi, a meno che non mi sbagli, dobbiamo proteggere i POST con token anti-contraffazione e proteggere i nostri metodi di controller con ValidateAntiForgeryTokenAttribute.AntiForgery.GetTokens: qual è lo scopo del parametro oldCookieToken?

Qualificherei questa domanda dicendo che non capisco correttamente il meccanismo con cui i token antiforgery vengono generati e verificati ... in particolare, il termine 'nonce' usato in questo contesto è alquanto mistico.

Poiché non stiamo consegnando HTML al client, non possiamo usare lo standard @Html.AntiForgeryToken(), quindi invece dobbiamo usare AntiForgery.GetTokens per acquisire e distribuire i token ai nostri clienti. Questo ha un misterioso primo parametro: oldCookieToken. Al momento, l'ho impostato su null e tutto sembra funzionare correttamente. Quindi qualcuno può dirmi ... a cosa serve fornire il vecchio token all'algoritmo di generazione dei token? Se viene rilasciato un solo token per la nostra app iOS e riutilizzato per più post, sarà problematico?

risposta

17

AntiForgery.GetTokens proverà a riutilizzare il vecchio token cookie per scopi di convalida. Quindi, se hai già un token di validazione che vuoi riutilizzare, tenterà di usarlo invece di generarne uno nuovo. Se il vecchio token non è valido, ne genererà uno nuovo e lo utilizzerà invece.

Quindi passare null a oldCookieToken è valido. Dice semplicemente a GetTokens di generare sempre un nuovo token cookie.

+0

Bene - Ho trovato questo utile. Non so perché non è stato contrassegnato come la risposta. Grazie comunque. –

+0

@PaulDeen: Ora è :-) – spender

+3

Nota: se si passa un oldCookieToken valido, newCookieToken sarà sempre vuoto, non lo stesso valore di oldCookieToken. – Alex