PHP : générer un token anti-CSRF cryptographiquement valable

27 février 2017

L'utilisation de token anti-CSRF lors de l'envoi de formulaires (et de requêtes AJAX) fait partie des bonnes pratiques fondamentales en matière de sécurité web. Cependant, on trouve dans beaucoup de tutos des méthodes pour générer un token dont le caractère aléatoire n'est pas la première qualité. Plusieurs se fondent sur le temps actuel pour générer la chaîne. Par conséquent, dans l'absolu, il est possible de deviner une telle clé ou d'en forger une. Une meilleure manière de générer un token anti-CSRF valable, sans tomber dans l'excès de paranoïa, serait donc la suivante :

<?php
$token = base64_encode( openssl_random_pseudo_bytes(32) );

Doc PHP.

Inspiration : http://www.eschrade.com/page/generating-secure-cross-site-request-forgery-tokens-csrf/