Protezione CSRF per form ASP Classic
Token casuale salvato in Session e verificato quando il form viene inviato.
Quando si usa
Quando una pagina autenticata modifica dati, elimina record, cambia password o esegue operazioni che non devono essere avviate da un sito esterno.
Perché si usa
Il token lega l'invio alla sessione corrente e riduce il rischio di richieste contraffatte eseguite all'insaputa dell'utente.
Vantaggi principali
- Soluzione riutilizzabile e adattabile
- Codice privo di dipendenze esterne
- Struttura commentabile e integrabile nel progetto
Anteprima del risultato
Il token CSRF aggiunge un controllo nascosto al form, così il server può verificare che l'invio provenga dalla pagina corretta.
Codice completo
Studia il flusso prima di copiarlo e provalo in un ambiente separato. Adatta sempre nomi, selettori, percorsi e controlli al progetto reale.
<%
If Len(Session("csrf_token")) = 0 Then
Randomize
Session("csrf_token") = Replace(CStr(Timer * Rnd()), ",", "") & CStr(Session.SessionID)
End If
If Request.ServerVariables("REQUEST_METHOD") = "POST" Then
Dim tokenRicevuto
tokenRicevuto = Request.Form("csrf_token")
If Len(tokenRicevuto) = 0 Or tokenRicevuto <> Session("csrf_token") Then
Response.Status = "403 Forbidden"
Response.End
End If
' Eseguire qui l'operazione protetta
End If
%>
<form method="post" action="">
<input type="hidden" name="csrf_token" value="<%=Server.HTMLEncode(Session("csrf_token"))%>">
<button type="submit">Salva</button>
</form>Da personalizzare: Generatore del token, durata della Session e rigenerazione dopo operazioni sensibili.
Errore da evitare: Il controllo CSRF non sostituisce autenticazione, autorizzazione, query parametriche e connessione HTTPS.