“Come proteggo i miei form PHP?” Per proteggere i tuoi form PHP devi implementare un CSRF Token per verificare l’origine delle richieste, utilizzare i Prepared Statements di PDO per evitare SQL Injection e pulire sempre i dati in uscita con htmlspecialchars per prevenire attacchi XSS. Non dimenticare di criptare le password con password_hash.

Nel 2026, la sicurezza non è più un optional, ma la base di ogni progetto web professionale. Uno degli strumenti più potenti (e spesso sottovalutati) a tua disposizione è il CSRF Token.

Scopriamo insieme cos’è, come implementarlo correttamente in PHP e quali altri “scudi” devi attivare per dormire sonni tranquilli.

Cos’è il CSRF Token e perché è fondamentale?

Il CSRF (Cross-Site Request Forgery) è un attacco subdolo: un sito malevolo “inganna” il browser di un utente loggato sul tuo sito, inviando richieste (come la modifica di una password o un pagamento) a tua insaputa.

Il CSRF Token è la soluzione definitiva. Si tratta di un codice segreto, unico e imprevedibile, che il tuo server genera e inserisce nei tuoi form.

  • Cosa fa: Assicura che la richiesta arrivi davvero dal tuo sito e non da un malintenzionato.
  • Come si usa: Lo inserisci come campo nascosto (<input type="hidden">) e lo verifichi alla ricezione dei dati.

Protezione Reale: Il CSRF Token blocca al 100% le POST automatiche da altri siti e i form nascosti malevoli.


🛠️ Guida Pratica: Implementare il CSRF Token in PHP

Ecco una funzione sicura per generare il tuo token:

PHP

function csrf_token(): string {
  if (empty($_SESSION['csrf'])) {
    $_SESSION['csrf'] = bin2hex(random_bytes(32)); // Genera 64 caratteri sicuri
  }
  return $_SESSION['csrf'];
}

Nel tuo Form:

HTML

<input type="hidden" name="csrf" value="<?= htmlspecialchars(csrf_token()) ?>">

In fase di salvataggio (Verifica): Usa sempre hash_equals per confrontare i token; questo previene i cosiddetti “timing attacks”.

PHP

if (empty($_POST['csrf']) || !hash_equals($_SESSION['csrf'], $_POST['csrf'])) {
    http_response_code(403);
    exit('Richiesta non autorizzata: CSRF non valido');
}

🛡️ Non solo CSRF: La tua Check-list di Sicurezza 2026

Il CSRF token è un ottimo scudo, ma non è totale. Per una protezione a 360°, devi integrare queste soluzioni:

1. Stop alle SQL Injection

Non concatenare mai i dati dell’utente nelle query.

  • Soluzione: Usa PDO con prepared statements.
  • Esempio: $stmt = $pdo->prepare("SELECT * FROM utenti WHERE id = :id"); $stmt->execute(['id' => $user_id]);

2. Difesa contro XSS (Cross-Site Scripting)

Evita che qualcuno inietti script malevoli nelle tue pagine.

  • Soluzione: Fai sempre l’escape dell’output con htmlspecialchars().
  • Pro Tip: Implementa una Content Security Policy (CSP) via header per bloccare script non autorizzati.

3. Protezione delle Password

Non salvare mai le password in chiaro.

  • Soluzione: Usa password_hash() per salvarle e password_verify() per controllarle. È lo standard di sicurezza più elevato oggi disponibile.

4. Blindare le Sessioni (Session Hijacking)

Impedisci che qualcuno rubi l’identità dei tuoi utenti.

  • Soluzione: Imposta i cookie di sessione come HttpOnly, Secure e con attributo SameSite => 'Lax'. Inoltre, rigenera sempre l’ID di sessione (session_regenerate_id(true)) dopo ogni login.

💡 Il consiglio di Salinet

La sicurezza è un processo, non un prodotto. Integrare questi sistemi non solo protegge i tuoi utenti, ma migliora il tuo posizionamento SEO, poiché i motori di ricerca premiano i siti web sicuri e affidabili.

Ovviamente tutto questo post è per dare suggerimenti e idee per proteggere i form dei propri siti o applicazioni web. Non è la risposta definitiva sicuramente una guida utile per prendere spunto per ottimizzare la sicurezza,

Leggi anche: https://it.wikipedia.org/wiki/SQL_injection

Leggi anche: https://www.salisnet.eu/2025/03/31-marzo-world-backup-web-day-giornata-mondiale-del-backup-per-proteggere-i-dati/