Maison >développement back-end >tutoriel php >Filtrage des données PHP : comment empêcher les attaques de scripts intersites

Filtrage des données PHP : comment empêcher les attaques de scripts intersites

王林
王林original
2023-07-30 18:09:141755parcourir

Filtrage de données PHP : comment prévenir les attaques par scripts intersites

Introduction :
Dans l'environnement réseau moderne, le script intersites (XSS) est devenu l'une des vulnérabilités de sécurité réseau les plus courantes et les plus dangereuses. Les attaques XSS profitent de la mauvaise gestion par le site Web des données saisies par les utilisateurs, permettant aux attaquants d'injecter du code de script malveillant et d'obtenir des informations sensibles des utilisateurs. Cet article décrira comment empêcher les attaques de scripts intersites via le filtrage des données PHP et fournira des exemples de code.

  1. Comprendre les principes des attaques XSS
    Avant de prévenir les attaques XSS, nous devons d'abord comprendre comment les attaquants exploitent cette vulnérabilité pour attaquer. Les attaques XSS sont principalement divisées en trois types : Reflected XSS, Stored XSS et DOM-based XSS. Les attaques XSS réfléchies et stockées sont les plus courantes. L'attaquant insère un code de script malveillant dans les données saisies par l'utilisateur. Lorsque l'utilisateur parcourt la page Web, le code malveillant sera exécuté pour atteindre l'objectif de l'attaque.
  2. Utilisez la fonction htmlspecialchars pour filtrer la sortie
    En PHP, vous pouvez utiliser la fonction htmlspecialchars pour filtrer la sortie et échapper les caractères spéciaux dans des entités HTML afin d'empêcher l'exécution de code de script malveillant. Voici un exemple de code :
$userInput = $_GET['input'];
$filteredOutput = htmlspecialchars($userInput);
echo $filteredOutput;

Dans l'exemple ci-dessus, $_GET['input'] signifie obtenir les données saisies par l'utilisateur à partir des paramètres d'URL. La fonction htmlspecialchars échappe aux données saisies par l'utilisateur, puis les affiche sur la page. Cela empêche les attaquants d'injecter du code de script malveillant.

  1. Utilisez des instructions préparées par MySQLi ou PDO pour filtrer les requêtes de base de données
    Pour les attaques XSS stockées, l'attaquant stockera le code malveillant dans la base de données lorsque le programme en arrière-plan lit les données de la base de données et les envoie à la page, le code malveillant. sera exécuté. Pour empêcher cette attaque, des instructions préparées par mysqli ou PDO peuvent être utilisées pour filtrer les entrées.

Ce qui suit est un exemple de code utilisant l'instruction précompilée mysqli :

$conn = new mysqli($servername, $username, $password, $dbname);
$stmt = $conn->prepare("SELECT username FROM users WHERE id = ?");
$stmt->bind_param("i", $userId);
$stmt->execute();
$stmt->bind_result($username);

while ($stmt->fetch()) {
  echo htmlspecialchars($username);
}

$stmt->close();
$conn->close();

Dans l'exemple ci-dessus, l'instruction précompilée mysqli est utilisée pour lier le $id saisi par l'utilisateur à l'instruction de requête, et la liaison est spécifiée via le bind_param function Le type de paramètre. Exécutez ensuite la requête et utilisez la fonction bind_result pour lier les résultats de la requête à la variable $username. Enfin, utilisez la fonction htmlspecialchars pour filtrer la sortie afin d'empêcher l'exécution de code malveillant.

  1. Utilisez la fonction filter_var pour filtrer les entrées utilisateur
    PHP fournit la fonction filter_var pour filtrer les données d'entrée utilisateur. Différents types d'entrées utilisateur peuvent être filtrés à l'aide de la fonction filter_var en combinaison avec des filtres prédéfinis tels que FILTER_SANITIZE_STRING.

Ce qui suit est un exemple de code qui utilise la fonction filter_var pour filtrer les entrées de l'utilisateur :

$userInput = $_POST['input'];
$filteredInput = filter_var($userInput, FILTER_SANITIZE_STRING);
echo $filteredInput;

Dans l'exemple ci-dessus, la fonction filter_var est utilisée pour filtrer les données saisies par l'utilisateur, et le filtre est spécifié comme FILTER_SANITIZE_STRING, ce qui signifie que seuls les caractères de chaîne de base sont autorisés. Cela filtrera certains caractères spéciaux et balises HTML pour empêcher les attaques XSS.

Conclusion :
Afin d'améliorer la sécurité du site Web et de prévenir les attaques de cross-site scripting, nous devons filtrer et traiter correctement les données saisies par l'utilisateur. Cet article décrit comment utiliser la fonction htmlspecialchars pour filtrer la sortie, utiliser les instructions précompilées mysqli ou PDO pour filtrer les requêtes de base de données et utiliser la fonction filter_var pour filtrer les entrées utilisateur. Avec un filtrage et un traitement corrects des données, nous pouvons protéger efficacement les sites Web contre la menace d’attaques XSS.

Matériaux de référence :

  • [Documentation officielle PHP - htmlspecialchars](https://www.php.net/manual/en/function.htmlspecialchars.php)
  • [Documentation officielle PHP - mysqli](https:// www.php.net/manual/en/book.mysqli.php)
  • [Documentation officielle PHP - AOP](https://www.php.net/manual/en/book.pdo.php)
  • [PHP Documentation officielle - filter_var](https://www.php.net/manual/en/function.filter-var.php)
  • [OWASP - XSS](https://owasp.org/www-community/attacks/ xss/)

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:
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