Maison développement back-end tutoriel php Premiers pas avec PHP : falsification de requêtes intersites (CSRF)

Premiers pas avec PHP : falsification de requêtes intersites (CSRF)

May 21, 2023 am 08:06 AM
php 入门指南 跨站点请求伪造 (csrf)

PHP est un langage de script open source largement utilisé dans le développement Web. Cependant, avec le nombre croissant de cybercriminalités, la sécurité est devenue l'une des considérations importantes dans la conception d'applications Web. Les attaques de falsification de requêtes intersites (CSRF) sont l'une des vulnérabilités courantes en matière de sécurité réseau. Cet article vise à fournir un guide d'introduction CSRF pour les débutants PHP.

L'attaque CSRF est une attaque qui exploite la relation de confiance existant dans le navigateur pour forger les requêtes des utilisateurs. Cette attaque se produit généralement lorsqu'un utilisateur visite un site Web malveillant ou non autorisé. L'attaquant insérera de faux formulaires HTML dans le site Web malveillant et définira l'adresse d'opération du formulaire sur un site Web approuvé par la victime. Lorsqu'un utilisateur est amené à soumettre un formulaire, son navigateur envoie automatiquement une requête contenant le cookie de la victime à un site Web de confiance, déclenchant ainsi l'attaque. Les attaquants peuvent ainsi effectuer de nombreuses actions malveillantes, telles que publier du spam, modifier les mots de passe des utilisateurs ou ajouter des utilisateurs à une liste noire à leur insu.

En PHP, la meilleure pratique pour prévenir les attaques CSRF est d'utiliser le mécanisme de vérification des jetons. Ce mécanisme permet aux applications de générer une valeur de jeton aléatoire unique, de l'intégrer dans chaque formulaire HTML et de valider la valeur lors de la soumission du formulaire. Lorsqu'une valeur de jeton expirée est soumise, l'application doit rejeter la demande et inviter l'utilisateur à se réauthentifier.

Ce qui suit est un exemple de code PHP de base montrant comment implémenter le mécanisme de vérification de jeton pour empêcher les attaques CSRF :

<?php
// 生成token值
$token = md5(uniqid(mt_rand(), true));

// 将token存储到SESSION变量中
$_SESSION['csrf_token'] = $token;

// 将token值嵌入到HTML表单中
echo '<form action="process_form.php" method="POST">';
echo '<label for="username">Username:</label>';
echo '<input type="text" id="username" name="username">';
echo '<label for="password">Password:</label>';
echo '<input type="password" id="password" name="password">';
echo '<input type="hidden" name="csrf_token" value="' . $token . '">';
echo '<input type="submit" value="Submit">';
echo '</form>';

// 处理表单数据并验证token值
if(isset($_POST['username']) && isset($_POST['password'])) {
    // 验证token值
    if($_POST['csrf_token'] == $_SESSION['csrf_token']) {
        // 处理表单数据
        $username = $_POST['username'];
        $password = $_POST['password'];
        // ...
    } else {
        echo 'Invalid token value. Please try again.';
    }
}
?>
Copier après la connexion

Dans l'implémentation du code, générez d'abord une valeur de jeton aléatoire via la fonction md5(uniqid(mt_rand(), true)), stockez-la dans la variable SESSION, et Il est intégré au formulaire HTML. Lorsque les données du formulaire sont soumises, l'application vérifie que la valeur du jeton dans la requête POST correspond à la valeur du jeton dans la SESSION. S'il y a une correspondance, la soumission des données du formulaire est autorisée, sinon la demande est refusée et l'utilisateur est invité à se réauthentifier.

Bien sûr, dans les applications réelles, il existe d'autres techniques de défense CSRF, comme l'utilisation de signatures numériques pour vérifier chaque demande de formulaire. Cependant, le mécanisme de vérification des jetons ci-dessus est une méthode simple et efficace et mérite d'être recommandé dans le développement PHP.

En bref, les attaques CSRF constituent une vulnérabilité de sécurité réseau courante et dangereuse. Les concepteurs d'applications PHP doivent suivre les meilleures pratiques pour garantir que leurs applications sont protégées contre ce type d'attaque. Une méthode simple mais efficace consiste à utiliser un mécanisme de vérification de jeton pour garantir que chaque demande de formulaire est initiée par un utilisateur de confiance.

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 de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Configuration du projet CakePHP Configuration du projet CakePHP Sep 10, 2024 pm 05:25 PM

Dans ce chapitre, nous comprendrons les variables d'environnement, la configuration générale, la configuration de la base de données et la configuration de la messagerie dans CakePHP.

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Date et heure de CakePHP Date et heure de CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler avec la date et l'heure dans cakephp4, nous allons utiliser la classe FrozenTime disponible.

Téléchargement de fichiers CakePHP Téléchargement de fichiers CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler sur le téléchargement de fichiers, nous allons utiliser l'assistant de formulaire. Voici un exemple de téléchargement de fichiers.

Routage CakePHP Routage CakePHP Sep 10, 2024 pm 05:25 PM

Dans ce chapitre, nous allons apprendre les sujets suivants liés au routage ?

Discuter de CakePHP Discuter de CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP est un framework open source pour PHP. Il vise à faciliter grandement le développement, le déploiement et la maintenance d'applications. CakePHP est basé sur une architecture de type MVC à la fois puissante et facile à appréhender. Modèles, vues et contrôleurs gu

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

CakePHP créant des validateurs CakePHP créant des validateurs Sep 10, 2024 pm 05:26 PM

Le validateur peut être créé en ajoutant les deux lignes suivantes dans le contrôleur.

See all articles