Steve TENZA
Intervient pour votre site internet
Facebook Me contacter Cookie
Télécharger
Noter:
5/5 (1)
Ajouté/Modifié le 2024-04-21
Visionné 1027 fois

Renforcer la sécurité avec les jetons CSRF (code source PHP)

Description

Les attaques de type CSRF (Cross-Site Request Forgery) peuvent compromettre la sécurité de votre application web en exploitant la confiance que cette dernière accorde aux requêtes provenant d'une source fiable.

Pour contrer ce type d'attaques, l'utilisation de jetons CSRF s'avère essentielle, nous allons voir comment mettre en place cette protection simple de jeton CSRF dans notre application PHP.

TEST CSRF TOKEN


CSRF Token PHP

Ce code PHP protège les formulaires POST et les requêtes GET, le jeton est généré de manière aléatoire et stocké dans la session PHP et lorsqu'une requête est effectuée, le jeton est vérifié côté serveur pour s'assurer de son authenticité.

//session_start() nous permet de sauvegarder $_SESSION['csrf_token'] jusqu'au prochain rechargement de la page
session_start();

//notre fonction qui générera un token pour la page en cours
function csrf_token(){

//on "global" $csrf_token, on pourra appeler autant de fois qu'on le souhaite csrf_token() et garder le même token (sans en générer un nouveau à chaque appel de la fonction, pour la page actuelle)
global $csrf_token;

//nombre de caractères hexadécimaux du jeton de sécurité
$csrf_token_length = 50;

if(!isset($csrf_token)){

//ceil() permet d'avoir une division du nombre de caractère à l'entier supérieur (substr() permet de couper l'entier supérieur)

//random_bytes() génère des octets aléatoires cryptographiquement sécurisés

//bin2hex() convertit les octets aléatoires en représentation hexadécimale

$csrf_token = substr(bin2hex(random_bytes(ceil($csrf_token_length / 2))), 0, $csrf_token_length);

//enregistre le token pour cette session
$_SESSION['csrf_token'] = $csrf_token;

}

return $csrf_token;
}

if(isset($_GET['id'])){

echo '<h1>Méthode GET</h1>';

//vérifie si le token existe et s'il est bon
if(!isset($_GET['csrf_token']) || ($_GET['csrf_token'] !== ($_SESSION['csrf_token'] ?? ''))){

echo '<p style="color:red">TOKEN INCORRECT</p>';

}else{

echo '<p style="color:green">TOKEN CORRECT</p>';

}

}
if(isset($_POST['id'])){

echo '<h1>Méthode POST</h1>';

//vérifie si le token existe et s'il est bon
if(!isset($_POST['csrf_token'])
|| !isset($_SESSION['csrf_token'])
|| $_POST['csrf_token'] !== $_SESSION['csrf_token']){

echo '<p style="color:red">TOKEN INCORRECT</p>';

}else{

echo '<p style="color:green">TOKEN CORRECT</p>';

}

}
?>
<p><a href="?id=1">Sans CSRF (GET)</a></p>
<p><a href="?id=1&csrf_token=<?= csrf_token() ?>">Avec CSRF (GET)</a></p>
<p><a href="?id=1&csrf_token=123">Avec faux CSRF (GET)</a></p>
<p><a href="?id=1&csrf_token=">Avec CSRF vide (GET)</a></p>

<form method="post" action="csrf_test.php">
<input type="hidden" name="id" value="1">
<input type="submit" value="Sans CSRF (POST)">
</form>
<form method="post" action="csrf_test.php">
<input type="hidden" name="id" value="1">
<input type="hidden" name="csrf_token" value="<?= csrf_token() ?>">
<input type="submit" value="Avec CSRF (POST)">
</form>
<form method="post" action="csrf_test.php">
<input type="hidden" name="id" value="1">
<input type="hidden" name="csrf_token" value="1234">
<input type="submit" value="Avec faux CSRF (POST)">
</form>
<form method="post" action="csrf_test.php">
<input type="hidden" name="id" value="1">
<input type="hidden" name="csrf_token" value="">
<input type="submit" value="Avec CSRF vide (POST)">
</form>
<?php
//nombre de caractères hexadécimaux du jeton de sécurité (paramètre disponible dans la fonction PHP)
$csrf_token_length = 50;
L'utilisation de jetons CSRF est une pratique essentielle et courante pour renforcer la sécurité de nos applications web, vous réduisez considérablement les risques d'attaques CSRF et protégez les données sensibles de votre base de données en implémentant cette protection simple dans votre application PHP.

J'espère que ce script gratuit vous est utile.
Pour soutenir mon travail, un simple don ou mettre une note est grandement apprécié.
Votre réussite en ligne commence ici

Vous cherchez à pousser encore plus loin vos idées ou à les concrétiser avec un site internet sur mesure ? Je suis là pour vous aider ! Mon expérience en développement web est à votre disposition.

Que ce soit la création de votre site web pro ou l'apport de fonctionnalités avancées à votre projet, contactez-moi pour en discuter et avoir un devis gratuit personnalisé.

Mon objectif est de vous offrir des solutions sur mesure qui répondent à vos besoins, et votre vision associée à mon expertise donnera vie à votre projet web parfait. Contactez-moi aujourd'hui, je réponds en général en moins d'une heure :

Demander un devis
Réponse rapide !

Vous recherchez un script précis ?

Dites-moi ce dont vous avez besoin, je peux développer le script demandé et vous envoyer un mail dès qu'il est dispo !

🔔 Vous pouvez laisser votre mail pour recevoir les nouveaux scripts. Pas de pub, pas de tracas. Vous êtes libre de le supprimer à tout moment.

Je prends en compte toutes les demandes. Les idées les plus populaires passent en priorité et seront publiées dès qu'elles seront prêtes. 3257 demandes reçues.

Si vous avez un projet en tête, je vous suggère de me contacter directement pour en discuter.

Commentaires

Ajouter un commentaire

Commenter
Pseudo/Nom
Email
Message
Captcha
memo1memo2
Commenter
Ajoutez un commentaire, soyez le premier !

Retour à la liste des scripts

Un site à créer ?
Contactez-moi