Maison >développement back-end >tutoriel php >Comment PHP se défend contre les attaques CSRF
Comment utiliser PHP pour se défendre contre les attaques CSRF (cross-site request forgery)
Avec le développement et la popularité des applications Web, les problèmes de sécurité des réseaux deviennent de plus en plus importants. Les attaques CSRF (Cross-site request forgery) sont devenues l’une des méthodes d’attaque courantes. Une attaque CSRF fait référence à un attaquant effectuant certaines opérations malveillantes en se faisant passer pour des demandes d'utilisateurs légitimes, telles que transférer de l'argent, modifier des mots de passe, etc. sans que l'utilisateur en soit conscient. Pour protéger les utilisateurs et les applications Web, les développeurs doivent prendre des mesures pour se défendre contre de telles attaques. Cet article explique comment utiliser PHP pour se défendre contre les attaques CSRF.
Voici un exemple de code utilisant le token :
// 生成令牌 function generateToken() { $token = bin2hex(random_bytes(32)); $_SESSION['csrf_token'] = $token; return $token; } // 验证令牌 function verifyToken($token) { if(isset($_SESSION['csrf_token']) && $_SESSION['csrf_token'] === $token) { return true; } return false; } // 在表单中添加令牌字段 function addTokenField() { $token = generateToken(); echo '<input type="hidden" name="csrf_token" value="'.$token.'">'; }
Exemple de code pour vérifier l'en-tête Referer :
function verifyReferer() { if(isset($_SERVER['HTTP_REFERER']) && strpos($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST']) !== false) { return true; } return false; }
Exemple de code pour vérifier l'en-tête Origin :
function verifyOrigin() { if(isset($_SERVER['HTTP_ORIGIN']) && $_SERVER['HTTP_ORIGIN'] === 'https://www.example.com') { return true; } return false; }
Exemple de code pour définir les propriétés des cookies :
session_set_cookie_params([ 'lifetime' => 86400, // Cookie的有效期为一天 'path' => '/', 'domain' => '.example.com', 'secure' => true, // 仅在HTTPS连接下传输 'httponly' => true // 仅通过HTTP协议访问 ]); session_start();
Pendant le processus de connexion, nous pouvons générer un jeton de connexion et le stocker côté serveur et dans la session. Dans chaque demande de connexion, nous devons vérifier la validité du jeton pour garantir que le jeton ne peut être obtenu que via le processus de connexion.
Pendant le processus de déconnexion, nous devons détruire les données de session liées à l'utilisateur et supprimer l'ID de session. Cela empêche les attaquants de voler les identifiants de session pour usurper l'identité des utilisateurs.
Résumé :
Les attaques CSRF sont un problème courant de sécurité des réseaux, mais nous pouvons prendre certaines mesures pour nous défendre contre cette attaque. Cet article présente certaines méthodes d'utilisation de PHP pour se défendre contre les attaques CSRF, notamment la génération et la vérification de jetons, la vérification des sources de requêtes, la définition des attributs des cookies et l'attention portée à la sécurité de connexion et de déconnexion. Grâce à l’utilisation combinée de ces méthodes, nous pouvons protéger efficacement la sécurité des applications Web et des utilisateurs.
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!