CSRF (Cross-Site Request Forgery)

PHP 🟡 Mid

Définition

Attaque qui force un utilisateur authentifie a exécuter des actions non voulues sur un site ou il est connecte, via un lien ou formulaire piège.

Analogie

Comme quelqu'un qui imite ta signature pour envoyer une lettre en ton nom.

Exemple de code

// Generation du token
$_SESSION['csrf'] = bin2hex(random_bytes(32));
echo '<input type="hidden" name="csrf" value="'
  . $_SESSION['csrf'] . '">';

// Verification
if (!hash_equals($_SESSION['csrf'], $_POST['csrf']))
  throw new SecurityException();

Cas d'usage

Sur tout formulaire ou action modifiant des données (POST, PUT, DELETE).

Anti-pattern

Protéger seulement la page de login et oublier les autres formulaires sensibles.

Termes liés

#core#interview#security

← → au clavier pour passer d'une fiche à l'autre