Position actuelle: Accueil> Derniers articles> Combinant htmlSpecialCars () pour produire des données HTML-SAFE

Combinant htmlSpecialCars () pour produire des données HTML-SAFE

M66 2025-05-28

Nous devons faire attention à éviter les vulnérabilités XSS (attaque de script de site transversale) lors de l'exécution de requêtes de base de données et de sortie de données sur des pages HTML à l'aide de PHP et MySQLI. Ce type de vulnérabilité se produit généralement lors de la sortie directement du contenu dans la base de données sur une page Web sans aucune évasion ni filtrage.

Pour produire du contenu en toute sécurité, HTMLSpecialChars () est un outil très utile. Il convertit des caractères spéciaux HTML (tels que < , > , & , " etc.) en entités HTML, ce qui empêche l'injecté de scripts malveillants dans la page. Combinée avec l'objet MySQLI_RESULT pour obtenir les résultats de la requête de la base de données, nous pouvons afficher en toute sécurité le contenu.

Voici un exemple spécifique montrant comment utiliser mysqli_result avec htmlSpecialChars () :

 <?php
// Connexion de base de données
$mysqli = new mysqli("localhost", "username", "password", "database");

// Vérifiez la connexion
if ($mysqli->connect_errno) {
    die("Échec de la connexion: " . $mysqli->connect_error);
}

// Exécuter une requête
$sql = "SELECT id, title, content FROM articles";
$result = $mysqli->query($sql);

if ($result && $result->num_rows > 0) {
    echo "<h1>Liste d&#39;articles</h1>";
    echo "<ul>";
    while ($row = $result->fetch_assoc()) {
        // utiliser htmlspecialchars Sortie d&#39;échappement
        $title = htmlspecialchars($row['title'], ENT_QUOTES, 'UTF-8');
        $content = htmlspecialchars($row['content'], ENT_QUOTES, 'UTF-8');

        // Supposons que l&#39;article ait un lien détaillé
        $articleUrl = "https://m66.net/article.php?id=" . urlencode($row['id']);

        echo "<li>";
        echo "<a href=\"$articleUrl\">$title</a><br>";
        echo "<p>$content</p>";
        echo "</li>";
    }
    echo "</ul>";
} else {
    echo "Aucun article trouvé。";
}

// Fermer la connexion
$mysqli->close();
?>

Description des points clés

  1. Utilisez htmlSpecialChars ()

    • Le paramètre ent_quotes garantit que les citations simples et doubles sont échappées.

    • «UTF-8» spécifie le codage des caractères pour éviter les problèmes de contournement causés par le codage.

  2. Utilisez UrLencode () lors de la construction d'URL
    Si vous devez insérer des paramètres dans l'URL, assurez-vous d'utiliser UrLencode () pour empêcher les caractères spéciaux de nuire à la structure de l'URL.

  3. N'éplisez pas les données non transformées directement dans HTML <br> La sortie directe des valeurs des champs de base de données est très dangereuse et doit être correctement traitée.

Résumer

Dans les projets réels, le développement de l'habitude d'échapper à toutes les sorties de données au navigateur est une exigence de base pour le développement de la sécurité. En combinant les résultats de la requête de MySQLI_RESULT et HTMLSpecialChars () , nous pouvons effectivement prévenir la plupart des attaques XSS et assurer la sécurité des sites Web et des utilisateurs.

Si vous avez des pièces qui ont besoin d'une optimisation supplémentaire, telles que l'encapsulation des fonctions de sortie ou l'utilisation de moteurs de modèle, je peux également les organiser pour vous. Voulez-vous que j'écrive un exemple de package plus complet?