CSRF (Cross-Site Request Forgery)

PHP 🟡 Mid

Definition

Attaque qui force un utilisateur authentifie a executer des actions non voulues sur un site ou il est connecte, via un lien ou formulaire piege.

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 donnees (POST, PUT, DELETE).

Anti-pattern

Proteger seulement la page de login et oublier les autres formulaires sensibles.

Termes lies

#core#interview#security