ASP Classic

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.