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

Révélez le secret de la falsification de requêtes intersites PHP (CSRF) et construisez un système de protection à toute épreuve

WBOY
WBOYavant
2024-02-25 13:07:131156parcourir

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.

L'homme derrière CSRF

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 :

  1. L'utilisateur s'est connecté au site Web de la victime et a enregistré des cookies dans le navigateur.
  2. L'utilisateur a visité un site Web contenant un script malveillant.
  3. Le script malveillant envoie une requête au site Web de la victime, transportant les cookies de l'utilisateur.
  4. Après avoir reçu la demande, le site victime pense qu'il s'agit de l'utilisateur et effectue les opérations correspondantes.

Créez un système de protection comme un mur de fer

Pour prévenir les attaques CSRF, vous pouvez prendre les mesures suivantes :

  1. Utilisez le jeton CSRF

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;
}
?>
  1. Utilisation des cookies SameSite

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);
?>
  1. Utiliser la politique de sécurité du contenu (CSP)

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"");
?>
  1. Valider la saisie de l'utilisateur

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.

Conclusion

Les attaques

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer