Maison >développement back-end >tutoriel php >Comment puis-je empêcher les attaques CSRF (Cross-Site Request Forgery) en PHP ?
La falsification de requêtes intersites (CSRF) est un type d'attaque dans lequel un site Web malveillant envoie une demande à un site Web légitime au nom de un utilisateur authentifié. Cela peut permettre à l'attaquant d'exécuter des actions que l'utilisateur n'avait pas prévu, comme changer son mot de passe ou effectuer des achats frauduleux.
Il existe plusieurs techniques qui peuvent être utilisées pour empêcher Attaques CSRF en PHP, notamment :
1. Exiger une authentification dans les paramètres GET et POST, pas seulement dans les cookies
Cette mesure limite la capacité des sites Web malveillants à envoyer des requêtes au nom d'utilisateurs authentifiés en exigeant qu'un jeton d'authentification valide soit présent à la fois dans le GET et Paramètres POST d'une requête.
2. Vérification de l'en-tête HTTP Referer
L'en-tête HTTP Referer contient l'URL de la page qui fait référence à la page actuelle. En vérifiant l'en-tête Referer, il est possible de détecter si une requête provient d'une source légitime ou d'un site web malveillant.
Validation de GET et POST Paramètres
Dans Kohana, vous pouvez utiliser la règle Valid::not_empty() pour valider les paramètres GET et POST pour assurez-vous qu’ils ne sont pas vides. Par exemple :
$rules = array( 'get_param' => array( array('not_empty') ), 'post_param' => array( array('not_empty') ) ); $validation = Validation::factory($request->query() + $request->post()) ->rules($rules); if (!$validation->check()) { // CSRF attack detected }
Vérification de l'en-tête du référent HTTP
Dans Kohana, vous pouvez utiliser la méthode Request::referrer() pour obtenir l'URL du référent page. Pour vérifier si l'en-tête Referer est valide, vous pouvez le comparer à la valeur attendue :
$referrer = $request->referrer(); if ($referrer !== $expected_referrer) { // CSRF attack detected }
Utiliser un jeton unique
Le moyen le plus efficace de empêcher les attaques CSRF consiste à utiliser un jeton unique. Ce jeton est généré sur le serveur et stocké dans la session. Lorsqu'un utilisateur soumet un formulaire, le jeton est inclus dans la demande. Le serveur vérifie ensuite le jeton et, s'il est valide, complète la demande.
Pour implémenter un jeton unique dans Kohana, vous pouvez suivre les étapes suivantes :
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!