Position actuelle: Accueil> Derniers articles> Filtrage de données PHP et protection XSS: comment empêcher efficacement les attaques de scripts inter-sites

Filtrage de données PHP et protection XSS: comment empêcher efficacement les attaques de scripts inter-sites

M66 2025-06-13

introduction

Dans les environnements de réseau modernes, les attaques de scripts croisées (XSS) sont devenues l'une des vulnérabilités de sécurité du réseau les plus courantes et les plus dangereuses. XSS attaque les sites Web d'exploiter pour traiter mal les données d'entrée des utilisateurs, permettant aux attaquants d'injecter des scripts malveillants pour voler des informations sensibles aux utilisateurs. Cet article présentera comment empêcher les attaques XSS via la technologie de filtrage de données PHP et fournira un exemple de code spécifique.

1. Comprendre les principes des attaques XSS

Avant d'empêcher les attaques XSS, nous devons d'abord comprendre les principes des attaques XSS. Les attaques XSS sont principalement divisées en trois types: XSS reflété, stockage XSS et DOM XSS. Parmi eux, les attaques de réflexion et de stockage XSS sont les plus courantes. L'attaquant peut atteindre l'objectif de l'attaque en intégrant des scripts malveillants dans les données saisies par l'utilisateur, et lorsque l'utilisateur accède à une page Web, les scripts malveillants seront exécutés.

2. Utilisez la fonction HTMLSpecialChars pour filtrer la sortie

En PHP, la fonction HTMLSpecialChars est souvent utilisée pour le filtrage de sortie. Il échappe aux caractères spéciaux aux entités HTML, empêchant ainsi l'exécution de scripts malveillants. Voici un exemple simple:

 $userInput = $_GET['input'];
$filteredOutput = htmlspecialchars($userInput);
echo $filteredOutput;

Dans cet exemple, $ _get ['entrée'] signifie obtenir la saisie des utilisateurs du paramètre URL. La fonction HTMLSpecialCars échappe aux caractères spéciaux pour empêcher l'exécution du script.

3. Utilisez des instructions précompilées MySQLI ou PDO pour filtrer les requêtes de base de données

Pour les attaques de stockage XSS, un attaquant peut stocker du code malveillant dans une base de données, et le code malveillant sera exécuté lorsqu'un site Web lit et sortira des données de la base de données. Pour éviter cela, la requête de la base de données doit être filtrée à l'aide de instructions précompilées MySQLI ou PDO .

Voici l'exemple de code pour les instructions précompilées à l'aide de 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 cet exemple, l'instruction précompilée de MySQLI est utilisée, et l'entrée $ utilisateur par l'utilisateur est liée via la fonction bind_param , le résultat de la requête est obtenu via la fonction bind_result , et la sortie est enfin filtrée via la fonction HTMLSpecialCars pour empêcher les attaques XSS.

4. Utilisez la fonction filter_var pour filtrer l'entrée utilisateur

PHP fournit également la fonction filter_var , qui est utilisée pour filtrer les données d'entrée utilisateur. Différents types d'entrée peuvent être filtrés en conjonction avec des filtres prédéfinis tels que filter_sanitize_string .

Voici un exemple de code pour filtrer l'entrée à l'aide de la fonction filter_var :

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

Dans cet exemple, la fonction filter_var filtre la saisie de l'utilisateur via le filtre filter_sanitize_string , supprimant les caractères dangereux et les balises HTML, empêchant l'injection de code malveillant.

en conclusion

Afin d'améliorer la sécurité du site Web et d'éviter les attaques de scripts inter-sites (XSS), les développeurs doivent filtrer et traiter correctement les données saisies par les utilisateurs. Cet article présente des méthodes pour utiliser la fonction HTMLSpecialCars pour le filtrage de sortie, les instructions précompilées MySQLI ou PDO pour filtrer les requêtes de base de données et filtrer l'entrée utilisateur à l'aide de la fonction filter_var . Grâce à ces mesures de protection, le risque d'attaques XSS peut être effectivement réduit et la sécurité du site Web peut être assurée.