Comment prévenir les attaques de falsification de requêtes intersites (CSRF) en PHP

C

p>Ce wikiComment vous apprend comment empêcher une attaque de falsification de requêtes intersites (CSRF) dans une application web PHP en incluant un jeton aléatoire avec chaque requête ou en utilisant un nom aléatoire pour chaque champ de formulaire. Une attaque CSRF (Cross Site Request Forgery) exploite une vulnérabilité d’application Web dans laquelle la victime exécute involontairement un script dans son navigateur qui tire parti de sa session connectée à un site particulier. Les attaques CSRF peuvent être effectuées sur des requêtes GET ou POST.

Créez la fonction aléatoire. Cette fonction génère une chaîne aléatoire en utilisant le fichier aléatoire Linux pour créer plus d’entropie.

Fermez le support de classe csrf.

Créer la fonction form_names(). Cette fonction génère des noms aléatoires pour les zones de formulaire.

Créer la fonction get_token_id(). Cette fonction récupère l’ID du jeton à partir de la session d’un utilisateur, et si un jeton n’a pas déjà été créé, génère un jeton aléatoire.

Fermez le fichier csrf.class.php.

Y compris un jeton aléatoire à chaque demande. C’est une chaîne unique qui est générée pour chaque session. Nous générons le jeton et l’incluons ensuite dans chaque formulaire en tant qu’entrée cachée. Le système vérifie ensuite si le formulaire est valide en comparant le jeton avec celui stocké dans la variable de session de l’utilisateur. Un attaquant sera incapable de générer une requête sans connaître la valeur du jeton.

Créer la fonction check_valid(). Cette fonction détermine si l’ID du jeton et la valeur du jeton sont tous deux valides. Ceci est fait en vérifiant les valeurs de la requête GET ou POST par rapport aux valeurs stockées dans la variable SESSION de l’utilisateur.

Sauvegardez le fichier.

Ajoutez le fichier de classe CSRF à un formulaire POST. Le code illustré ici vous montre comment ajouter le fichier de classe CSRF à un formulaire POST afin de prévenir une attaque CSRF.

Créer la fonction get_token(). Cette fonction récupère la valeur du jeton, ou si elle n’a pas été générée, génère une valeur de jeton.

Utilisation d’un nom aléatoire pour chaque champ de formulaire. La valeur du nom aléatoire de chaque champ est stockée dans une variable de session. Une fois le formulaire soumis, le système génère une nouvelle valeur aléatoire. Pour réussir, un attaquant devrait deviner ces noms de formes aléatoires.

Créer csrf.class.php. C’est le fichier qui contiendra toutes les fonctions qui seront utilisées pour prévenir les attaques CSRF.

Add comment