Maison >développement back-end >tutoriel php >Révélez le secret de la falsification de requêtes intersites PHP (CSRF) et construisez un système de protection à toute épreuve
L'éditeur php Strawberry révélera le secret de la falsification de requêtes intersites PHP (CSRF) et vous aidera à créer un système de protection à toute épreuve. Les attaques CSRF constituent une menace courante pour la sécurité des réseaux. Les pirates informatiques utilisent les informations d'identité des utilisateurs pour envoyer des requêtes malveillantes et causer des dommages. Il est crucial de comprendre les principes de l’attaque et de prendre des mesures de protection efficaces. Cet article présentera en détail le fonctionnement des attaques CSRF et fournira des suggestions de protection pratiques pour vous aider à renforcer la sécurité du système et à protéger votre site Web contre les menaces potentielles.
CSRF profite du mécanisme du navigateur WEB pour soumettre automatiquement des cookies. Lorsqu'un utilisateur visite un site Web contenant un script malveillant, celui-ci peut secrètement envoyer une requête à un autre site Web (le site Web de la victime). Le navigateur enverra automatiquement des cookies au site Web de la victime et l'attaquant pourra usurper l'identité de l'utilisateur pour effectuer des opérations non autorisées, telles que la modification d'informations personnelles, le transfert d'argent ou l'achat de biens.
Les attaques CSRF doivent généralement remplir les conditions suivantes :
Pour prévenir les attaques CSRF, vous pouvez prendre les mesures suivantes :
CSRF Token est une string générée aléatoirement, utilisée pour vérifier la légitimité de la demande. A chaque requête, le serveur génère un Token CSRF et l'envoie au navigateur. Le navigateur stocke le jeton CSRF dans un cookie et le renvoie au serveur lors des requêtes ultérieures. Une fois que le serveur aura reçu la demande, il vérifiera si le jeton CSRF est correct. Si le jeton CSRF est incorrect, la requête est falsifiée et le serveur refusera d'exécuter la requête.
Ce qui suit est un exemple d'utilisation de PHP pour implémenter le jeton CSRF :
<?php // Generate a CSRF Token $csrfToken = bin2hex(random_bytes(32)); // Store the CSRF Token in a cookie setcookie("csrfToken", $csrfToken, time() + (60 * 60 * 24), "/"); // Verify the CSRF Token if (isset($_POST["csrfToken"]) && $_POST["csrfToken"] === $_COOKIE["csrfToken"]) { // The request is legitimate, process it } else { // The request is a CSRF attack, deny it header("Http/1.1 403 Forbidden"); exit; } ?>
Les cookies SameSite sont une nouvelle fonctionnalité des navigateurs qui empêchent les attaques CSRF. Les cookies SameSite permettent uniquement au navigateur d'envoyer des cookies sur des requêtes de même origine. Cela signifie que si un utilisateur visite un site Web contenant un script malveillant, celui-ci ne peut pas envoyer de cookies au site Web de la victime, empêchant ainsi les attaques CSRF.
Voici un exemple de configuration des cookies SameSite à l'aide de PHP :
<?php // Set the SameSite attribute for the CSRF Token cookie setcookie("csrfToken", $csrfToken, time() + (60 * 60 * 24), "/", null, null, true); ?>
CSP est un en-tête HTTP qui permet aux administrateurs de sites Web de contrôler les ressources que le navigateur peut charger. CSP peut être utilisé pour empêcher les attaques CSRF car il empêche les navigateurs de charger des scripts malveillants.
Voici un exemple de configuration de CSP en PHP :
<?php // Set the CSP header header("Content-Security-Policy: default-src "self""); ?>
En plus d'utiliser les techniques ci-dessus, les entrées de l'utilisateur peuvent également être validées pour empêcher les attaques CSRF. Par exemple, lors du traitement d'un formulaire soumis par l'utilisateur, vous pouvez vérifier si le formulaire contient un jeton CSRF et si le jeton CSRF est correct.
CSRF sont une vulnérabilité de sécurité Web courante qui permet aux attaquants de usurper l'identité des utilisateurs et d'effectuer des actions non autorisées. Pour prévenir les attaques CSRF, plusieurs mesures peuvent être prises, telles que l'utilisation de jetons CSRF, l'utilisation de cookies SameSite, l'utilisation de CSP et la validation des entrées de l'utilisateur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!